掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
CImageのGetDC()で取得できるHDCにSelectObject (ID:66648)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
XP、VS2005、MFC 二つのCImageから、GetDC()でデバイスコンテキストを取得し、 個別に作成したペンを順にSelectObjectをしようとしています。 以下の処理を行ったところ、pen1とold2の値が同じになってしまいました。 (当然なのかこの作業の後、img1に対しラインを引くと白い線になります) これは何故なのでしょうか? //ペンの設定 CImage img1; CImage img2; img1.Create( 100,100,24 ); img2.Create( 100,100,24 ); HPEN old1,pen1,old2,pen2; pen1 = ::CreatePen( PS_SOLID,1,RGB( 0, 0,255)); pen2 = ::CreatePen( PS_SOLID,1,RGB(255,255,255)); HDC hdc; hdc = img1.GetDC(); old1 = (HPEN)::SelectObject( hdc , pen1); // Ima1から取得したHDCにpen1を img1.ReleaseDC(); // Img1のHDCを開放 hdc = img2.GetDC(); // Img2のHDCを取得 old2 = (HPEN)::SelectObject( hdc , pen2); // pen1が返ってきてしまう(img1のHDC?) img2.ReleaseDC(); ///////////////////////////////////////////////////////// // 塗りつぶし(参考) (略) RECT rec; SetRect( &rec,0,0,100,100); HDC hdc; hdc = img1.GetDC(); FillRect( hdc , &rec , (HBRUSH)GetStockObject( WHITE_BRUSH ) ); img1.ReleaseDC(); hdc = img2.GetDC(); FillRect( hdc , &rec , (HBRUSH)GetStockObject( BLACK_BRUSH ) ); img2.ReleaseDC(); img1.Save("c:\\img1.bmp"); img2.Save("c:\\img2.bmp"); この場合は、img1.bmpは真っ白BMP、img2.bmpは真っ黒BMPになります。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.