blog2010 > 2010年10月18日 > Win32アプリケーションで cairo + librsvg を使いSVGを表示する

「blog2010/2010年10月18日/Win32アプリケーションで cairo + librsvg を使いSVGを表示する」の編集履歴(バックアップ)一覧はこちら

blog2010/2010年10月18日/Win32アプリケーションで cairo + librsvg を使いSVGを表示する」(2010/10/18 (月) 11:46:05) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

#blognavi [Visual C++]-[Win32]-[Win32 プロジェクト]のプロジェクトを作成しておく(仮にDrawSVGとする) -http://ftp.acc.umu.se/pub/gnome/binaries/win32/ から下記のbinアーカイブとdevアーカイブをダウンロード。見つからなければ「dependencies」も探す。★マークのものは「gtk+-bundle_*_win32.zip」で代用可能 -cairo_*_win32.zip ★ -cairo-dev_*_win32.zip ★ -expat_*_win32.zip ★ -fontconfig_*_win32.zip ★ -freetype_*_win32.zip ★ -glib_*_win32.zip ★ -glib-dev_*_win32.zip ★ -gtk+_*_win32.zip ★ -gtk+-dev_*_win32.zip ★ -libcroco_*_win32.zip -libgsf_*_win32.zip -libpng_*_win32.zip -librsvg_*_win32.zip -librsvg-dev_*_win32.zip -libxml2_*_win32.zip -pango_*_win32.zip ★ -zlib_*_win32.zip ★ -全binアーカイブの「bin」に含まれる全DLLをプロジェクトフォルダに展開<BR>※「gtk+_*_win32.zip」は「libgdk_pixbuf-2.0-0.dll」のみ使用 -全devアーカイブの「include」以下をプロジェクトフォルダ(.vcxprojのある所)に展開<BR>「glib-dev_*_win32.zip」の「lib/glib-2.0/include/」も「include」として展開<BR>※「gtk+-dev_*_win32.zip」は「include/gtk-2.0/gdk-pixbuf」のみ使用 -「cairo-dev_*_win32.zip」の「lib/cairo.lib」をプロジェクトフォルダに展開 -http://bellard.org/tcc/ から「tcc-*-win32-bin.zip」をダウンロード -「tiny_implib.exe」をプロジェクトフォルダに展開 -VisualStudioコマンドプロンプトを起動 -プロジェクトフォルダに移動し下記コマンドを実行 > tiny_impdef.exe librsvg-2-2.dll > lib.exe /def:librsvg-2-2.def /machine:x86 /out:librsvg-2.2.lib -プロジェクトの[構成プロパティ]-[C/C++]-[追加のインクルード ディレクトリ]に以下を設定 .\include .\include\cairo .\include\librsvg-2\librsvg .\include\gtk-2.0 .\include\glib-2.0 -プロジェクトの[構成プロパティ]-[リンカー]-[入力]-[追加の依存ファイル]に以下を追加 -cairo.lib -librsvg-2-2.lib -DrawSVG.cppに以下の修正を加える #include "cairo-win32.h" #include "cairo-svg.h" #include "rsvg.h" #include "rsvg-cairo.h" (中略) case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 描画コードをここに追加してください... RsvgHandle *rsvg; cairo_surface_t *cr_surface; cairo_t *cr; rsvg_init(); rsvg = rsvg_handle_new_from_file("test.svg", NULL); cr_surface = cairo_win32_surface_create(hdc); cr = cairo_create(cr_surface); rsvg_handle_render_cairo(rsvg, cr); cairo_destroy(cr); cairo_surface_destroy(cr_surface); rsvg_handle_free(rsvg); rsvg_term(); EndPaint(hWnd, &ps); break; (以下略) #right{ カテゴリ: &#x5b;[[Program>blog2010/カテゴリ/Program]]&#x5d; - &trackback() - 2010年10月18日 11:44:33 } #comment(nostyle,nsize8,size30) #blognavi
#blognavi -[Visual C++]-[Win32]-[Win32 プロジェクト]のプロジェクト(仮にDrawSVG)を作成しておく -http://ftp.acc.umu.se/pub/gnome/binaries/win32/ から下記のbinアーカイブとdevアーカイブをダウンロード。&br()見つからなければ「dependencies」も探す。★マークのものは「gtk+-bundle_*_win32.zip」で代用可能 --cairo_*_win32.zip ★ --cairo-dev_*_win32.zip ★ --expat_*_win32.zip ★ --fontconfig_*_win32.zip ★ --freetype_*_win32.zip ★ --glib_*_win32.zip ★ --glib-dev_*_win32.zip ★ --gtk+_*_win32.zip ★ --gtk+-dev_*_win32.zip ★ --libcroco_*_win32.zip --libgsf_*_win32.zip --libpng_*_win32.zip --librsvg_*_win32.zip --librsvg-dev_*_win32.zip --libxml2_*_win32.zip --pango_*_win32.zip ★ --zlib_*_win32.zip ★ -全binアーカイブの「bin」に含まれる全DLLをプロジェクトフォルダに展開&br()※「gtk+_*_win32.zip」は「libgdk_pixbuf-2.0-0.dll」のみ使用 -全devアーカイブの「include」以下をプロジェクトフォルダ(.vcxprojのある所)に展開&br()「glib-dev_*_win32.zip」の「lib/glib-2.0/include/」も「include」として展開&br()※「gtk+-dev_*_win32.zip」は「include/gtk-2.0/gdk-pixbuf」のみ使用 -「cairo-dev_*_win32.zip」の「lib/cairo.lib」をプロジェクトフォルダに展開 -http://bellard.org/tcc/ から「tcc-*-win32-bin.zip」をダウンロード -「tiny_implib.exe」をプロジェクトフォルダに展開 -VisualStudioコマンドプロンプトを起動 -プロジェクトフォルダに移動し下記コマンドを実行 --> tiny_impdef.exe librsvg-2-2.dll --> lib.exe /def:librsvg-2-2.def /machine:x86 /out:librsvg-2.2.lib -プロジェクトの[構成プロパティ]-[C/C++]-[追加のインクルード ディレクトリ]に以下を設定 --.\include --.\include\cairo --.\include\librsvg-2\librsvg --.\include\gtk-2.0 --.\include\glib-2.0 -プロジェクトの[構成プロパティ]-[リンカー]-[入力]-[追加の依存ファイル]に以下を追加 --cairo.lib --librsvg-2-2.lib -DrawSVG.cppに以下の修正を加える(本来はWM_PAINTじゃなくて適切な個所で行う) #include "cairo-win32.h" #include "cairo-svg.h" #include "rsvg.h" #include "rsvg-cairo.h" (中略) case WM_PAINT: hdc = BeginPaint(hWnd, &ps); // TODO: 描画コードをここに追加してください... RsvgHandle *rsvg; cairo_surface_t *cr_surface; cairo_t *cr; rsvg_init(); rsvg = rsvg_handle_new_from_file("test.svg", NULL); cr_surface = cairo_win32_surface_create(hdc); cr = cairo_create(cr_surface); rsvg_handle_render_cairo(rsvg, cr); cairo_destroy(cr); cairo_surface_destroy(cr_surface); rsvg_handle_free(rsvg); rsvg_term(); EndPaint(hWnd, &ps); break; (以下略) #right{ カテゴリ: &#x5b;[[Program>blog2010/カテゴリ/Program]]&#x5d; - &trackback() - 2010年10月18日 11:44:33 } #comment(nostyle,nsize8,size30) #blognavi

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。