• 締切済み

VC++でBitmapとText文字を表示させたいのですが、

VC++でBitmapとText文字を表示させたいのですが、 Bitmap上に、Rectを作成しTextを表示させると、 OSや画面設定等により、配置が微妙に変わってしまいます・・・ そこで、 BitmapとTextを合成して、新たにBitmapを作成できれば、 Bitmapなので、画面設定等には影響しないかと思っておりますが、 新たなBitmapの作成は可能なのでしょうか? また、Bitmapを作成せずに、OS等に依存しない方法はありますでしょうか? 環境は、Microsoft Visual Studio 2008です。

みんなの回答

  • mi65536
  • ベストアンサー率100% (6/6)
回答No.1

GDIでデバイスコンテキストに直接描画処理をされているのだと思います。 一旦メモリーデバイスコンテキストを作成して、メモリーデバイスコンテキストに描画処理を行い、BitBltなどで、デバイスコンテキストに転送するようにすれば可能だと思います。 ↓参考までに。 <http://eternalwindows.jp/graphics/bitmap/bitmap02.html>

pipikeji
質問者

補足

回答ありがとうございます。 BitBltを利用すれば問題なく描画できました。 ありがとうございます。 ※参考URLが見れませんでした・・・・

関連するQ&A

  • VC++のOnDraw()関数で、ボールを動かす

    下記のように、VC++のOnDraw()関数において、ウィンドウ上でボールを上下に 動かせたいのですが、動きません。VC++のバージョンは9.0です。(Visual Studio 2008) どういうふうに書けば動きますか? ------------------------------------------------------------------------- void CControllGameView::OnDraw(CDC* pDC) { Bitmap2.LoadBitmap(IDB_BITMAP2); // ボール pOldBitmap = MemDC.SelectObject(&Bitmap2); // 転送前のビットマップ領域を退避 GetClientRect(&rect); // ウィンドウのサイズをrectに記憶 pDC->BitBlt((rect.right-42)/2, rect.top+50, 42, 41, &MemDC, 0, 0, SRCCOPY); // ビット単位でビットマップ画像を転送 int z = rect.bottom + 50; // ボールのy座標の初期値 while(z < rect.top){ pDC->MoveTo((rect.right-42)/2, z+=1); } MemDC.SelectObject(pOldBitmap); // 元に戻す ReleaseDC(pDC); }

  • VC++で作成アプリをWinPEで動かしたい

    Microsoft Visual Studio 2012 を使っています。VC++ で作成したアプリケーションをVisual Studio のインストールされていないPC(例えばMacPC)で動かすために、Windows PE 3.1 を起動し、このOS上で VC++ で開発したアプリケーションを動かしたいのです。この場合、どうすればよいのでしょうか?

  • VCでのFrame(VB6)は?

    お世話になります VB6のFrameコントロールの様に、フレームの枠にタイトルを付けたいのですが。 VC(visual studio 2010)の場合どのコントロールを使えばよろしいのでしょうか? Panelかな?と思い配置したのですが、Caption(VB6)に該当するTextが無いようなのですが。

  • MFCでのBITMAP作成について

    VC++2005MFCで開発しています。 カメラからの画像入力の部分を作成しているのですがchar配列からのカラーbitmapの作成の仕方が分かる方いませんでしょうか? 直接ファイルに書き込む方法ですとフォーマット通りに書き込めば良いとは思うのですが、画面表示をしたいのでCBitmap又はHBitmapで取得したいです。 調べていると、モノクロだとSepBitmapBitsでできそうです。 しかし、msdnを見るとカラーの場合はSetDIBitsを使用しろとあるのですが、SetDIBitsの項を見ると何か思っている用法と違いそうです。 また、VC++.NETですとDrawing::Bitmap(( width, height, stride, format, scan0);でフォーマットを指定して作成できそうなのですが、それに相応するようなものはないかと探しているのですが見つかりません。 すいませんがご教授お願いします。

  • MFCでbitmapを背景にしてstaticテキストを透過させる方法

    MFCでbitmapを背景にしてstaticテキストを透過させる方法 VisualStadio2005 MFC ダイアログベースでプログラムを作成しています。 bitmapをPictureControlで配置し、その上にStaticControlを配置して 画像の上に文字が表示されるようにしたいのですが、 Staticの背景を透過させて、下の画像を表示されることができません。 OnCtlColor()でstaticにSetBkMode(TRANSPARENT)を設定すると、 Dialog自体の色が出てきてしまいます。 どうかご教示お願いいたします。

  • VCでの問題・・・

    マッピングモードでつまづいてます。 SetMapMode(MM_LOENGLISH); CRect rect; GetClientRect(&rect); pDC->Ellipse(0,0,rect.right,-rect.bottom); とした場合、クライアント領域全体に楕円が表示されると思っていたのですが、右と下に余白があいてしまいます。 MM_TEXTだと思ったように表示されるのですが、MM_LOENGLISHだとGetClientRectでしっかりと領域を取得できていないようです。どうすればMM_LOENGLISHでしっかりとクライアント領域を取得できますか? まだ、VCはじめたばかりで分からないことだらけです。 どうかよろしくお願いします。

  • Bitmap画像の消去について

    やりたいこととして Bitmap画像を表示する前になにかしら背景が描画されています。 そしてボタンを押すとか何かしらイベントが起こったときにBitmap画像を描画します。 そしてまたボタンを押すと背景はそのままでそのBitmap画像だけを消去する ということがしたいです。 今、ピクチャーボックスを使ってBitmap画像を表示することはできます。 ただそのBitmap画像を消去することはできていません。 探しているとピクチャーボックスを白く塗りつぶして、背景を再描画するって方法はあるのですが、いろいろあってその方法は使いたくないです。 Bitmap画像だけを消去する方法はあるのでしょうか? OSはVistaで、VC++2003.netを使っています。 宜しくお願いします。

  • windows10でVC6.0++のclを使いたい

    cl.exeの場所:C:\Program Files\Microsoft Visual Studio\VC98\Bin 環境変数INCLUDE設定:C:\Program Files\Microsoft Visual Studio\VC98\Include 環境変数LIB設定:C:\Program Files\Microsoft Visual Studio\VC98\Lib を登録したのですが、mspdb60.dllがないといわれました。 検索したらあるのですが、 どうすれば、Windows10でvc6.0++のCコンパイラを使えますか? 教えてくださいよろしくお願いします。

  • VC++でダイアログ表示について

    VC++初心者です。 MFCアプリケーションでダイアログベースのアプリケーションを作ったのですが、ボタンクリック時にもう一つダイアログを表示しようと思っています。 以下のコードだと、うまく表示されずに画面がフリーズしてしまいます。どこを直したらいいのでしょうか。ご教授願います。 環境は、xp、Visual Studio.net 2003です。 void CMFCtestDlg::OnBnClickedButton1() {   //   CmyDialog myDL;   myDL.DoModal(); } MFCtestDlg.cpp内、#include "myDialog.h" は記述してあります。 VBの経験はあるのですが、VC++はまったくわかりません。 よろしくお願いします。

  • VC++ダイアログボックスの表示更新がわかりません

    現在ダイアログボックスにスタティックコントロールを配置し、表示更新する際不明な点があります。VC6.0 MFCです。 1、ダイアログボックス上のコントロールに、作成したビットマップを表示させる際、OnInitDialog関数内で、Bitbiltしていますが、表示されません。 ボタンクリックイベント等で、同様の手順でBitbiltすると表示されます。 これはなぜなのでしょうか? また、ダイアログボックスが表示された際にBitmapを表示するにはどうすればよいでしょうか? 2、また、表示されたBitmapはダイアログボックスを動かしたり、隠れたりすると消えてしまいます。 再表示を自動的にさせるにはどうすればよいでしょうか?(OnDraw関数のようなものがあるのでしょうか?) 初歩的な質問で申し訳ありませんが、よろしくお願いいたします。

専門家に質問してみよう