お世話になっております。
いま、線画及び図形を描画する
アプリケーションを作成しています。
その中でCBrushのハッチブラシを使っているのですが、
ハッチブラシによって描かれるハッチは間隔が常に一定で
線種も決まったものになってしまっています。
そのため、自由にハッチを変更できるように
したいのですが、自分でハッチを描画して
クリッピングする方法のほかに
ハッチブラシのハッチの間隔や線種を
変更する方法はあるのでしょうか。
ご存知の方がいらっしゃいましたらどうぞご教授ください。
開発環境はWinXp Pro VC++6.0 SP 5 MFC(exe)です。
よろしくお願いいたします。
CBrush::CreatePatternBrush()使えばできるのでは?
FUCKTさんレスありがとうございます。
MSDNのCBrush::CreatePatternBrush()を見てみたのですが、
使えるビットマップが8×8ピクセルとありました。
そのため、教えていただいたのに申し訳ないのですが
間隔を自由に可変したり線種を変えたりするのは
少し厳しいと思います。
やはり自分で描画するしかないのでしょうか・・・
Windows NT/2000/XPの場合8X8以上も使用可能のようです。
Windows2000で実際試してみたら出来ました。
Win95にも対応する必要があるなら、ビットマップでタイルパターン作ってBitBlt()で繰り返し
タイルを描画するしかないですね。
Win98に関しては、情報ソースによって対応/非対応が違っているので正確なところはわかりま
せん。
返答が遅れて申し訳ありません。
>Windows NT/2000/XPの場合8X8以上も使用可能のようです。
試してみたところ確かに使えました。
(ちなみに98SE以前はサポートしないのでOKです)
で、
CBrush::CreatePatternBrush()
をつかうことにして、
動的にビットマップを作成するようにしたのですが、
当然のことながらハッチの間隔が広がるほど
ビットマップが大きくなってしまう、
また一点鎖線や二点鎖線を描画することが非常に困難、
などの理由から
FUCKTさんには申し訳ないのですが
結局自分でハッチを描画してクリッピングするように
してしまいました。
お騒がせしてすみませんでした。
#どこかにWindowsAPIの詳細なソース転がってないかなー