ハッチのカスタマイズについて

[戻る]
Aquarium 2003/09/04(木) 09:35:22
お世話になっております。

いま、線画及び図形を描画する
アプリケーションを作成しています。
その中でCBrushのハッチブラシを使っているのですが、
ハッチブラシによって描かれるハッチは間隔が常に一定で
線種も決まったものになってしまっています。

そのため、自由にハッチを変更できるように
したいのですが、自分でハッチを描画して
クリッピングする方法のほかに
ハッチブラシのハッチの間隔や線種を
変更する方法はあるのでしょうか。

ご存知の方がいらっしゃいましたらどうぞご教授ください。

開発環境はWinXp Pro VC++6.0 SP 5  MFC(exe)です。
よろしくお願いいたします。

FUCKT 2003/09/04(木) 11:07:26
CBrush::CreatePatternBrush()使えばできるのでは?

Aquarium 2003/09/04(木) 11:33:39
FUCKTさんレスありがとうございます。

MSDNのCBrush::CreatePatternBrush()を見てみたのですが、
使えるビットマップが8×8ピクセルとありました。
そのため、教えていただいたのに申し訳ないのですが
間隔を自由に可変したり線種を変えたりするのは
少し厳しいと思います。

やはり自分で描画するしかないのでしょうか・・・

FUCKT 2003/09/04(木) 15:41:33
Windows NT/2000/XPの場合8X8以上も使用可能のようです。
Windows2000で実際試してみたら出来ました。
Win95にも対応する必要があるなら、ビットマップでタイルパターン作ってBitBlt()で繰り返し
タイルを描画するしかないですね。
Win98に関しては、情報ソースによって対応/非対応が違っているので正確なところはわかりま
せん。

Aquarium 2003/09/12(金) 12:57:04
[[解決]]
返答が遅れて申し訳ありません。

>Windows NT/2000/XPの場合8X8以上も使用可能のようです。

試してみたところ確かに使えました。
(ちなみに98SE以前はサポートしないのでOKです)
で、
CBrush::CreatePatternBrush()
をつかうことにして、
動的にビットマップを作成するようにしたのですが、
当然のことながらハッチの間隔が広がるほど
ビットマップが大きくなってしまう、
また一点鎖線や二点鎖線を描画することが非常に困難、
などの理由から
FUCKTさんには申し訳ないのですが
結局自分でハッチを描画してクリッピングするように
してしまいました。

お騒がせしてすみませんでした。

#どこかにWindowsAPIの詳細なソース転がってないかなー

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