GDIとGDI+の混在

[戻る]
vector 2010/12/02(木) 16:41:46
GDI+未経験です。

Bitmapの回転・拡大・縮小・変形をGDI+で組み込もうと
思っています。
組み込もうというのは、現在テキストの回転・拡大・縮小
をすでに組み込んだGDIベースのモジュールに対してです。

このテキスト処理をGDI+に移行せずに、Bitmapとテキスト
を同じデバイスコンテキストに出力可能でしょうか?

よろしくお願い申し上げます。

#GDIのSetWorldTransformでも考慮したんですが、よくある
画像編集ツールで、四角枠の四隅につけられた変形・回転
ハンドルをマウスでドラッグするような操作の実現は厳しい
とどこかで読みました。

仲澤@失業者 2010/12/03(金) 17:04:41
コメント付きませんねぇ。
ビットマップを保存するときぐらいしかGDI+は使ったことがありませんが、
 1.GDI+は、旧GDIを土台に機能拡張したClassライブラリである。
 2.自分が上を設計するならば、互換性を保ったラッパとして実装するはず。
 3.できない、又はハングする非互換性部分には「警告」又は「エラー」が
   出るように型又はclassをデザインするはず。
と考えられます。
どのクラスに何をしようとしているのか、いまいち不明ですが、
「とにかくやってみればわかる」のではないでしょうか。
それが、C++の良いところです。

vector 2010/12/04(土) 20:31:29
仲澤@失業者さんコメントありがとうございます。
やってみれば...といわれましたが、そこらを解説した記事
がないものでしょうか?
この機能をGDIのみで実装したオープンソースはなく、有名どこ
ろはGDI+のようでした。

きのこ 2010/12/05(日) 15:38:36
GDI+の経験も知識も無いのですが、
「猫でもわかるプログラミング」さんのWindows SDK編 第4部 第335章
GDI+の基礎その1によると、GDI+のGraphicsオブジェクトは、
Graphics MyGraphics(hdc); のようにHDCを指定して作成できるようです。

vectorさんのGDIベースのモジュールでも、おそらく描画先にHDCを用いていると思います。
そのHDCでGraphicsオブジェクトを作成してGDI+のBitmap描画を行い、最後に同じ
HDCに対して、GDIベースの既存のテキスト描画処理を行うのはどうでしょうか?

(参考)
猫でもわかるプログラミング
http://homepage2.nifty.com/c_lang/

>この機能をGDIのみで実装したオープンソースはなく、有名どころはGDI+のようでした。

以前、GDI(DIBSection)にてアフィン変換(回転・拡大縮小・せん断など)を実装した事が
あるのですが、かなり面倒だった気がします。
もしGDI+で画像処理が実現出来るのであれば、GDI+を使う方が良いかもしれません。

PATIO 2010/12/06(月) 11:03:35
既にコメントがついていますが、
GDIとGDI+はHDCによって同じ対象を扱う事ができます。
この事はそれぞれのプログラミング方法の説明を元に
試してみれば、わかると思います。
GDIにしてもGDI+にしてもそれなりに説明を行なっている
サイトがあると思いますのでまずはそこを参考にして
テスト的にプログラムを組んでみてはいかがでしょうか?

vector 2010/12/06(月) 16:07:29
きのこさん、コメントありがとうございます。
画像相当にこなされるようにお見受けします。
猫でもわかるプログラミング、文字通りぴったりでした。
GDI+がこんなに扱いやすいとは...(*^_^*)。

PATIOさん、コメントありがとうございます。
仲澤@失業者さんに言われたように、やっとテスト的に
プログラムを組んでみようと思えるようになりました。

みなさんどうもサポート、ありがとうございました。

vector 2010/12/06(月) 16:08:18
[[解決]]
解決しました。

古いスレッドには追加発言できません。