ペンによる1ドット間隔の点線の描画について

解決


見習いPG  2012-09-12 16:18:09  No: 73527  IP: [192.*.*.*]

以下ソースコードによるのユーザースタイルのペンによる線の描画ですが、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 );

編集 削除
瀬戸っぷ  2012-09-13 11:02:12  No: 73528  IP: [192.*.*.*]

C++Builder向けのようですが、下記のようなページが。
http://d.hatena.ne.jp/A7M/20100204/1265262962

ということで……
CPen pen( PS_GEOMETRIC | PS_ENDCAP_FLAT | PS_USERSTYLE, 1, &LogBrush, 2, dwPenStyle );
としてみたらどうでしょうか?

編集 削除
見習いPG  2012-09-24 12:00:51  No: 73529  IP: [192.*.*.*]

瀬戸っぷ 様

発言が遅れてしまい申し訳ありません。

提示頂いたサイトを拝見しました。
ペン作成時のユーザースタイルの配列は試行錯誤をして以下にしました。
dwPenStyle[0] = 0;
dwPenStyle[1] = 2;
垂直、水平でのユーザースタイルの線の描画は1ドットの点線になりました。
しかしながら、斜めに線を描画するときれいな点線になりませんでした。

仕方ないので、ユーザースタイルの線の描画は断念しました。
2点間による直線を自前で描画して点線にするスタイルにしました。

自前での描画にしました。ありがとうございました。

編集 削除