MFCの場合は、
ダイアログを生成したときにそれに対応するID(たとえばIDC_STATIC_GPとします)を割り当てれば
CDC *pDC = GetDlgItem(IDC_STATIC_GP)->GetDC();
GetDlgItem(IDC_STATIC_GP1)->GetClientRect(&rec);
m_MemDC1.CreateCompatibleDC(pDC);
m_Bitmap1.CreateCompatibleBitmap(pWinDC,rec.right,rec.bottom);
m_MemDC1.SelectObject(&m_Bitmap1);
m_MemDC1.PatBlt(0,0,rec.right,rec.bottom,WHITENESS);
m_yellow_Pen.CreatePen(PS_SOLID,1,RGB(230,245,0)); //黄色のペンを作成
ReleaseDC(pWinDC);
ReleaseDC(pDC);
として描画できますが、C++/CLIの場合はダイアログのIDを取得できません。
"C++/CLIでダイアログに描画する方法を教えてください。"
「ダイアログ」はどのように作ったものですか?
1.リソースビューから、リソースの追加でダイアログを作成した
->クラスの追加によってCDialogの派生クラスが作られる
2.プロジェクトに新規項目でWindowsフォームを追加してた
->System::Windows::Forms::Formの派生クラスが作られる
----
1の場合は、VC++でMFCを使う場合とまったく同じ書き方で出来るはずです。
ダイアログデザインで、スタティックコントロールのプロパティの「ID」を"IDC_STATIC_GP"に設定すれば、質問文にあるコードはそのまま動きます。
2の場合は、.NETのクラスを使うことになります。
例えば、Form_Loadのイベントに、下記コードを追加します。
(フォーム上に"pictureBox1"という名前のPictureBoxが配置してあるものとします)
//PictureBoxと同じ大きさのImageオブジェクトを作成 pictureBox1->Image = gcnew Bitmap(pictureBox1->Width, pictureBox1->Height); //ImageオブジェクトからGraphicsオブジェクトの作成 Graphics^ g = Graphics::FromImage(pictureBox1->Image); //線の描画 g->DrawLine(Pens::Red, 0, 0, 100, 100);
http://imagingsolution.blog107.fc2.com/blog-category-7.html(一番最後のところ)
コメント(0件)