第一次学,求助高手,是哪里错了
HDC hdc = GetDC(hwnd);
HDC mdc = CreateCompatibleDC(hdc);
HBITMAP hbg = (HBITMAP)LoadImage (NULL, L"image/bg.bmp", IMAGE_BITMAP, 480, 852, LR_LOADFROMFILE);
SelectObject(mdc, hbg);
BitBlt(hdc, 0, 0, 480, 852, mdc, 0, 0, SRCCOPY);
c++在hdc中显示不出bmp位图
答案:3 悬赏:0 手机版
解决时间 2021-03-19 14:29
- 提问者网友:嗝是迷路的屁
- 2021-03-19 01:22
最佳答案
- 五星知识达人网友:胯下狙击手
- 2021-03-19 02:31
一、你的代码需要重点查核的地方:
HDC hdc = GetDC(hwnd); //请查hwnd是是哪个东西的句柄,这个东西在窗体上是否可见
HDC mdc = CreateCompatibleDC(hdc);
//这一句 L"image/bg.bmp" 中的L可能要去除,不同的编译环境不同要求
HBITMAP hbg = (HBITMAP)LoadImage (NULL, L"image/bg.bmp", IMAGE_BITMAP, 480, 852, LR_LOADFROMFILE);
SelectObject(mdc, hbg);
BitBlt(hdc, 0, 0, 480, 852, mdc, 0, 0, SRCCOPY);
二、以下代码,在BDS 2006中的C++ Builder中通过,不必另加引用和库,供你对比参考,你的代码基本上没错,我改的地方作了标注:
//--------------------------------------------------------------
//放上一个按钮控件,双击这个控件生成基本的函数,然后去添加你的代码
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//在窗体上先放一个Panel1控件,此处修改,让你取得Panel1控件的句柄,这样你就可以在Panel1上画图了
HDC hdc = GetDC(Panel1->Handle);
HDC mdc = CreateCompatibleDC(hdc);
//注意,我改向了D盘根目录下的bg.bmp文件,并自个用画图板乱画一个图,保存为D:\bg.bmp
//BDS 2006 C++Builder中提示"d:\\bg.bmp"前不要加“L”。
HBITMAP hbg =
(HBITMAP)LoadImage (NULL, "d:\\bg.bmp",
IMAGE_BITMAP, 480, 852, LR_LOADFROMFILE);
SelectObject(mdc, hbg);
BitBlt(hdc, 0, 0, 480, 852, mdc, 0, 0, SRCCOPY);
}
//---------------------------------------------------------------三、学习编程的道路是很难的,因为书上,或别的的源代码是有具体的环境的,需要理解着来。当然,没有经验的朋友有时根本无法“理解着来”。祝你好运哦。
HDC hdc = GetDC(hwnd); //请查hwnd是是哪个东西的句柄,这个东西在窗体上是否可见
HDC mdc = CreateCompatibleDC(hdc);
//这一句 L"image/bg.bmp" 中的L可能要去除,不同的编译环境不同要求
HBITMAP hbg = (HBITMAP)LoadImage (NULL, L"image/bg.bmp", IMAGE_BITMAP, 480, 852, LR_LOADFROMFILE);
SelectObject(mdc, hbg);
BitBlt(hdc, 0, 0, 480, 852, mdc, 0, 0, SRCCOPY);
二、以下代码,在BDS 2006中的C++ Builder中通过,不必另加引用和库,供你对比参考,你的代码基本上没错,我改的地方作了标注:
//--------------------------------------------------------------
//放上一个按钮控件,双击这个控件生成基本的函数,然后去添加你的代码
void __fastcall TForm1::Button2Click(TObject *Sender)
{
//在窗体上先放一个Panel1控件,此处修改,让你取得Panel1控件的句柄,这样你就可以在Panel1上画图了
HDC hdc = GetDC(Panel1->Handle);
HDC mdc = CreateCompatibleDC(hdc);
//注意,我改向了D盘根目录下的bg.bmp文件,并自个用画图板乱画一个图,保存为D:\bg.bmp
//BDS 2006 C++Builder中提示"d:\\bg.bmp"前不要加“L”。
HBITMAP hbg =
(HBITMAP)LoadImage (NULL, "d:\\bg.bmp",
IMAGE_BITMAP, 480, 852, LR_LOADFROMFILE);
SelectObject(mdc, hbg);
BitBlt(hdc, 0, 0, 480, 852, mdc, 0, 0, SRCCOPY);
}
//---------------------------------------------------------------三、学习编程的道路是很难的,因为书上,或别的的源代码是有具体的环境的,需要理解着来。当然,没有经验的朋友有时根本无法“理解着来”。祝你好运哦。
全部回答
- 1楼网友:从此江山别
- 2021-03-19 03:59
有没有错误提示?有的话贴出来看看
再看看别人怎么说的。
- 2楼网友:舊物识亽
- 2021-03-19 03:08
可以用GDI+的Bitmap类Bitmapbm("c:\\1.bmp");ColorCr;bm.GetPixel(10,10,Cr);BYTEbR=Cr.GetR();BYTEbG=Cr.GetG();BYTEbB=Cr.GetB();bR,bG,bB就是10,10这个坐标像素的RGB分量使用GDI+需要包含gdiplus.h头文件连接gdiplus.lib库
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯