Visual C++ 6.0 MFC DIALOGベース で作成しています。
ピクチャボックスにビットマップ表示を行い、任意の指定エリアに
四角形(塗りつぶし無し)を描画したいのですが、わかりません。
よろしくお願い致します。
現状の線、四角形の描画部分を記載します。
GetDlgItem(IDC_PICTURE)->InvalidateRect(NULL);
GetDlgItem(IDC_PICTURE)->UpdateWindow();
m_CDC = GetDlgItem(IDC_PICTURE)->GetDC();
CPen lPen( PS_SOLID, 10, RGB(255,255,255) );
m_CDC->SelectObject( &lPen );
// 塗りつぶされてしまいます。
m_CDC->Rectangle(100,100,150,150);
// 線を太くした場合、角が丸く...
m_CDC->MoveTo(10, 10);
m_CDC->LineTo(100, 10);
m_CDC->LineTo(100, 100);
m_CDC->LineTo(10, 100);
m_CDC->LineTo(10, 10);
NULL_BRUSHを使ってみるとか。
もしくは、FrameRectで描画するとか。
CDC::FrameRectでの四角の描画はできたのですが、線の太さは
変更できるのでしょうか。
GetDlgItem(IDC_STATIC_BITMAP)->InvalidateRect(NULL);
GetDlgItem(IDC_STATIC_BITMAP)->UpdateWindow();
m_CDC = GetDlgItem(IDC_STATIC_BITMAP)->GetDC();
CBrush lCBrush;
CRect lCRect;
lCBrush.CreateSolidBrush(RGB(255,255,255));
lCRect.SetRect(200, 200, 300, 300);
m_CDC->FrameRect(lCRect, &lCBrush);
>CDC::FrameRectでの四角の描画はできたのですが、線の太さは
>変更できるのでしょうか。
ヘルプにはっきりと書いてありますよ。
(質問するまでもないですよね?)
http://msdn2.microsoft.com/ja-jp/library/c05d02b8(VS.80).aspx
>関数は指定されたブラシを使って境界線を描きます。境界線の幅と高さは常に 1 論理単位です。
太さを変えたいならRactangleでSelectObjectでNULL_BRUSHを指定するのが一般的でしょう。
理解・調査不足で申し訳ありません。
以下の内容で解決しました。
ありがとうございました。
CPen lPen( PS_SOLID, 5, RGB(255,255,255) );
m_CDC->SelectObject( &lPen );
m_CDC->SelectStockObject(NULL_BRUSH);
m_CDC->Rectangle(0,0,200,200);
ツイート | ![]() |