だれか教えて!バックグランドへの描画

[戻る]
ダイザ [HomePage] 2004/04/03(土) 08:53:49
バックグランドへ描画して、書き込み終わったあとにフォアグランドに一度にうつした
いのですが、以下の様にコーディングしたのですが、描きませんどうしてでしょうか?
以下は、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();

n 2004/04/03(土) 09:52:18
dcに選択すべきビットマップはどこに…?

ダイザ [HomePage] 2004/04/03(土) 10:49:45
dcに選択すべきビットマップは、かならずいるのでしょうか?
新規に画像をメモリデバイスコンテキストへ出力したいのですが、
どうすればよろしいのでしょうか?

n 2004/04/03(土) 11:38:24
かならずいります。
DCは画家で、ビットマップはカンバスです。
pDCに互換なビットマップをCreateCompatibleBitmap()で作ってdcに選択してから、
dcに書き込みしましょう。
(ビットマップを破棄するときは、dcから選択解除してからでないと失敗します。)

てつや 2004/04/03(土) 13:44:06
>カンバス
なんか笑らた

n 2004/04/03(土) 13:50:44
カンバスって言わない?

てつや 2004/04/03(土) 14:53:03
>カンバスって言わない?
カンバスは間違いではありませんが、
多くの人はキャンバスって言います。

n 2004/04/03(土) 15:41:01
「エネルギー」と言うかそれとも「エナジー」と言うか。
どちらかが間違い?

RiSK [E-Mail] 2004/04/03(土) 23:36:02
# スレ主さんごめんなさいね。

> >カンバスって言わない?
> カンバスは間違いではありませんが、
> 多くの人はキャンバスって言います。

これで解決?
http://dictionary.goo.ne.jp/search.php?MT=canvas&kind=&mode=0

「カンバス」「キャンバス」両方ありますね。


さらに、ATOK14 の カタカナ語英語辞書で実験。

  カンバス   → Canvas
  キャンバス → Canvas
両方変換できます。

  エナジー   → Energy
  エネルギー → Energy
こちらも両方変換できます。

# ちなみに「エネルギー」はドイツ語です。

n 2004/04/04(日) 09:07:18
カンバスって独語じゃなかったのか…失礼

ダイザ [HomePage] 2004/04/04(日) 09:50:49
[[解決]]
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();

古いスレッドには追加発言できません。