以下ソースコードによるのユーザースタイルのペンによる線の描画ですが、1ドット間隔で描画されません。
3ドット間隔で線が描画されます。PS_DOTと同じになります。何かアドバイスをお願いします。
開発環境は、VS2008(VC++) MFC SDIです。
LOGBRUSH LogBrush;
DWORD dwPenStyle[2];
int iOldBkMode;
LogBrush.lbStyle = BS_SOLID;
LogBrush.lbColor = 0x00303030;
LogBrush.lbHatch = 0;
dwPenStyle[0] = 1;
dwPenStyle[1] = 1;
CPen pen( PS_USERSTYLE, 1, &LogBrush, 2, dwPenStyle );
CPen *OldPen;
OldPen = (CPen *)pDC->SelectObject( &pen );
iOldBkMode = pDC->SetBkMode( TRANSPARENT );
pDC->MoveTo( 10, 10 );
pDC->LineTo( 100, 10 );
pDC->SetBkMode( iOldBkMode );
pDC->SelectObject( OldPen );
C++Builder向けのようですが、下記のようなページが。
http://d.hatena.ne.jp/A7M/20100204/1265262962
ということで……
CPen pen( PS_GEOMETRIC | PS_ENDCAP_FLAT | PS_USERSTYLE, 1, &LogBrush, 2, dwPenStyle );
としてみたらどうでしょうか?
瀬戸っぷ 様
発言が遅れてしまい申し訳ありません。
提示頂いたサイトを拝見しました。
ペン作成時のユーザースタイルの配列は試行錯誤をして以下にしました。
dwPenStyle[0] = 0;
dwPenStyle[1] = 2;
垂直、水平でのユーザースタイルの線の描画は1ドットの点線になりました。
しかしながら、斜めに線を描画するときれいな点線になりませんでした。
仕方ないので、ユーザースタイルの線の描画は断念しました。
2点間による直線を自前で描画して点線にするスタイルにしました。
自前での描画にしました。ありがとうございました。
ツイート | ![]() |