バックグランドへ描画して、書き込み終わったあとにフォアグランドに一度にうつした
いのですが、以下の様にコーディングしたのですが、描きませんどうしてでしょうか?
以下は、OnDraw関数内の記述です。
CDC dc;
dc.CreateCompatibleDC(pDC);
CRect wRect(0,0,100,100) ;
CRgn wRgn ;
wRgn.CreateRectRgn(0,0,wRect.right,wRect.bottom) ;
CBrush wBrush ;
wBrush.CreateSolidBrush(0xff0000) ;
dc.SelectObject(&wBrush) ;
dc.PaintRgn(&wRgn) ;
pDC->BitBlt(0, 0, wRect.right, wRect.bottom, &dc, 0, 0, SRCCOPY);
// メモリデバイスコンテキストを削除します。
dc.DeleteDC();
dcに選択すべきビットマップはどこに…?
dcに選択すべきビットマップは、かならずいるのでしょうか?
新規に画像をメモリデバイスコンテキストへ出力したいのですが、
どうすればよろしいのでしょうか?
かならずいります。
DCは画家で、ビットマップはカンバスです。
pDCに互換なビットマップをCreateCompatibleBitmap()で作ってdcに選択してから、
dcに書き込みしましょう。
(ビットマップを破棄するときは、dcから選択解除してからでないと失敗します。)
>カンバス
なんか笑らた
カンバスって言わない?
>カンバスって言わない?
カンバスは間違いではありませんが、
多くの人はキャンバスって言います。
「エネルギー」と言うかそれとも「エナジー」と言うか。
どちらかが間違い?
# スレ主さんごめんなさいね。
> >カンバスって言わない?
> カンバスは間違いではありませんが、
> 多くの人はキャンバスって言います。
これで解決?
http://dictionary.goo.ne.jp/search.php?MT=canvas&kind=&mode=0
「カンバス」「キャンバス」両方ありますね。
さらに、ATOK14 の カタカナ語英語辞書で実験。
カンバス → Canvas
キャンバス → Canvas
両方変換できます。
エナジー → Energy
エネルギー → Energy
こちらも両方変換できます。
# ちなみに「エネルギー」はドイツ語です。
カンバスって独語じゃなかったのか…失礼
n さんありがとうございました。
以下の変更で動作確認しました。
”ビットマップを破棄するときは、dcから選択解除してからでないと失敗します。”
というところがまだ実現できませんが、また新しい質問にします。
void XXXXX::OnDraw(CDC* pDC)
{
CUfoDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
// TODO: この場所にネイティブ データ用の描画コードを追加します。
CBitmap wBitmap ;
wBitmap.CreateCompatibleBitmap(pDC,1024,512) ; //カンバスを作成
CDC dc;
dc.CreateCompatibleDC(pDC); // メモリデバイスコンテキストを作成しま
す。
dc.SelectObject(&wBitmap) ; // カンバスを選択
CRect wRect(0,0,200,200) ; // 矩形領域を設定
CRgn wRgn ;
// wRgn.CreateRectRgn(0,0,wRect.right,wRect.bottom) ;
CBrush wBrush ;
wBrush.CreateSolidBrush(0xff0000) ; // ブラシの色に
青を選択
wRgn.CreateEllipticRgn(0,0,wRect.right,wRect.bottom) ; //(楕)円を表
示
dc.SelectObject(&wBrush) ;
dc.PaintRgn(&wRgn) ;
pDC->BitBlt(0, 0, wRect.right, wRect.bottom, &dc, 0, 0, SRCCOPY);
// メモリデバイスコンテキストを削除します。
dc.DeleteDC();