だれか教えて!バックグランドへの描画 – プログラミング – Home

だれか教えて!バックグランドへの描画
 
通知
すべてクリア

[解決済] だれか教えて!バックグランドへの描画


ダイザ
 ダイザ
(@ダイザ)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

バックグランドへ描画して、書き込み終わったあとにフォアグランドに一度にうつした
いのですが、以下の様にコーディングしたのですが、描きませんどうしてでしょうか?
以下は、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
 n
(@n)
ゲスト
結合: 22年前
投稿: 90
 

dcに選択すべきビットマップはどこに…?


返信引用
ダイザ
 ダイザ
(@ダイザ)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

dcに選択すべきビットマップは、かならずいるのでしょうか?
新規に画像をメモリデバイスコンテキストへ出力したいのですが、
どうすればよろしいのでしょうか?


返信引用
n
 n
(@n)
ゲスト
結合: 22年前
投稿: 90
 

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


返信引用
てつや
 てつや
(@てつや)
ゲスト
結合: 22年前
投稿: 34
 

>カンバス
なんか笑らた


返信引用
n
 n
(@n)
ゲスト
結合: 22年前
投稿: 90
 

カンバスって言わない?


返信引用
てつや
 てつや
(@てつや)
ゲスト
結合: 22年前
投稿: 34
 

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


返信引用
n
 n
(@n)
ゲスト
結合: 22年前
投稿: 90
 

「エネルギー」と言うかそれとも「エナジー」と言うか。
どちらかが間違い?


返信引用
RiSK
 RiSK
(@RiSK)
ゲスト
結合: 21年前
投稿: 21
 

# スレ主さんごめんなさいね。

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

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

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

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

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

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

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


返信引用
n
 n
(@n)
ゲスト
結合: 22年前
投稿: 90
 

カンバスって独語じゃなかったのか…失礼


返信引用
ダイザ
 ダイザ
(@ダイザ)
ゲスト
結合: 22年前
投稿: 7
Topic starter  

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();


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました