掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
WinXPでMemDCを使ったら。。。 (ID:52168)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
MFCで、MemDCを利用した描画系のアプリを作っているのですが、 WinXPと他のOS(Win9X,Win2000)で動作が異なってしまい 困っています。どなたか原因と対策をご教授ください。 具体的な内容は以下のとおりです。 下記のソースにて描画すると、 WinXPでは、MemDCに描いたX座標1024以降の CPenの結果(Rectangleのエッジ)が表示されません。 (「pen.CreatePen(PS_SOLID, 2, color2)」で CPenを作成すると表示されるのですが。。。) WinXPマシンの画面の解像度は1024×768です。 --ソース-------- void CBitTestView::OnDraw(CDC* pDC) { int x=1000; //MemDCのテスト描画視点 CDC MemDC; CBitmap Bitmap; //四角形描画用のRECT構造体 RECT rt; rt.left = x; rt.top = 0; rt.right = x+200; rt.bottom = 50; DWORD color = RGB(255, 0, 0); DWORD color2 = RGB(0, 0, 255); //メモリDCを作成 MemDC.CreateCompatibleDC(pDC); Bitmap.CreateCompatibleBitmap(pDC, x+1000, 100); CBitmap *oldBitmap = MemDC.SelectObject(&Bitmap); //描画モードにR2_MASKPEN を指定 int bkMode = MemDC.SetROP2(R2_MASKPEN); CPen pen; pen.CreatePen(PS_SOLID, 1, color2); CPen *oldPen = MemDC.SelectObject(&pen); CBrush brush2; brush2.CreateSolidBrush(color); CBrush *oldBrush2 = MemDC.SelectObject(&brush2); //描画 MemDC.PatBlt(0, 0, x+1000, 100, WHITENESS); MemDC.Rectangle(&rt); //BitBltにてメモリDCからDCへ転送 pDC->BitBlt(0,0, 1000, 100, &MemDC, x, 0, SRCCOPY); MemDC.SetROP2(bkMode); MemDC.SelectObject(oldBitmap); MemDC.SelectObject(oldBrush2); MemDC.SelectObject(oldPen); return ; }
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.