※ ChatGPTを利用し、要約された質問です(原文:CDCオブジェクトの作成について)
CDCオブジェクトの作成について
このQ&Aのポイント
CDCオブジェクトを使った図形の描画方法について教えてください。
CreateCompatibleDC関数を使用してCDCオブジェクトを作成し、図形を描画した後にクライアント領域にBitBltする方法を教えてください。
このコードでは、CDCオブジェクトとCreateCompatibleDC関数を使用して図形を描画し、BitBlt関数を使用してクライアント領域に描画していますが、うまく描画されません。どうすれば良いでしょうか?
// あまり意味はないのですが、
//CDCのオブジェクトを宣言して、
//そこへ図形を描画して、
//クライエント領域にBitBltするときは、
//どうすればいいですか?
//CreateCompatibleDCが関係していると思っています。
//ですが、上手く描画できません。
//教えてください、
//お願いします。
void CProject1View::OnDraw(CDC* pDC)
{
CProject1Doc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
//////////////////////////////////////////////////////
CDC imageDC;
CPen pen,*oldpen;
pen.CreatePen(PS_SOLID,3,RGB(255,0,0));
imageDC.CreateCompatibleDC(pDC);
for(int i=0;i<100;i++)
{
for(int j=0;j<100;j++)
{
imageDC.SetPixel(i,j,RGB(128,0,0));
}
}
oldpen=imageDC.SelectObject(&pen);
imageDC.Rectangle(50,50,400,300);
pDC->BitBlt(0,0,600,600,&imageDC,0,0,SRCCOPY);
imageDC.SelectObject(oldpen);
//////////////////////////////////////////////////////
}
お礼
回答ありがとうございました。 一応以下のようにする事で出来ました。 void CProject1View::OnDraw(CDC* pDC) { CProject1Doc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; ////////////////////////////////////////////////////// CDC imageDC; CPen pen,*oldpen; pen.CreatePen(PS_SOLID,3,RGB(255,0,0)); imageDC.CreateCompatibleDC(pDC); CBitmap bmp; bmp.CreateCompatibleBitmap(pDC,600,600); imageDC.SelectObject(&bmp); for(int i=0;i<100;i++) { for(int j=0;j<100;j++) { imageDC.SetPixel(i,j,RGB(0,0,255)); } } oldpen=imageDC.SelectObject(&pen); imageDC.Rectangle(50,50,400,300); imageDC.Ellipse(100,100,600,600); pDC->TransparentBlt(0,0,600,600,&imageDC,0,0,600,600,RGB(0,0,0)); imageDC.SelectObject(oldpen); ////////////////////////////////////////////////////// }