dialog 用StretchBlt加载 了1.BMP图片,想刷新显示加载的2.bmp,此时1.bmp可以见。 题目有点长,有好的实现方法嘛? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 楼主是什么意思?是你显示 1.BMP 时,它并没有显示?而要等到你控制显示 2.BMP 时,才显示 1.BMP 的图片内容?那是不是你在控制显示 1.BMP 时,没有刷新显示图片的区域啊?不然,不会看不到图片内容的 啊 声明变量如下: float fWidth,fHeight; /* CBitmap bitmapPoint,bitmapLine,bitmapCaver,bitmapNavi; BITMAP bmpPoi,bmpLine,bmpCaver,bmpNavi; CDC dcPoi,dcLine,dcCaver,dcNavi; CDC *pDCPoi,*pDCLine,*pDCCaver,*pDCNavi; CRect rectPoi,rectLine,rectCaver,rectNavi;*/ CBitmap bitmap[9],bitmapTop,bitmapBot,bitmapIcon; BITMAP bmp[9],bmpTop,bmpBot,bmpIcon; CDC dc[9],dcTop,dcBot,dcIcon; CDC *pDC[9],*pDCTop,*pDCBot,*pDCIcon; CRect rect[9],rectTop,rectBot,rectIcon;显示代码如下: float BmpX=100,BmpY=40,BmpScale=7; bitmap[1].LoadBitmap(IDB_BITMAP1); bitmap[1].GetBitmap(&bmp[1]); //CDC P=GetDC() pDC[1] = GetDC();// dc[1].CreateCompatibleDC(pDC[1]); dc[1].SelectObject(&bitmap[1]); GetClientRect(&rect[1]); pDC[1]->SetStretchBltMode(HALFTONE); pDC[1]->StretchBlt(BmpX+fWidth,BmpY,rect[1].Width()/BmpScale,rect[1].Height()/BmpScale,&dc[1],0,0,bmp[1].bmWidth,bmp[1].bmHeight,SRCCOPY); ReleaseDC(pDC[1]); 1.BMP 有显示,但是我想显示2.BMP 时,1.BMP不显示,即及时刷新代码如下:图片显示void CTestDlg::OnPaint(){ //CDC *pdc; float fWidth=0,fHeight=0; float BmpX=100,BmpY=40,BmpScale=7; CBitmap bitmap[9],bitmapTop,bitmapBot,bitmapIcon; BITMAP bmp[9],bmpTop,bmpBot,bmpIcon; CDC dc[9],dcTop,dcBot,dcIcon; CDC *pDC[9],*pDCTop,*pDCBot,*pDCIcon; CRect rect[9],rectTop,rectBot,rectIcon; if(t){ bitmap[1].LoadBitmap(IDB_BITMAP1); bitmap[1].GetBitmap(&bmp[1]); //CDC P=GetDC() pDC[1] = GetDC();// dc[1].CreateCompatibleDC(pDC[1]); dc[1].SelectObject(&bitmap[1]); GetClientRect(&rect[1]); pDC[1]->SetStretchBltMode(HALFTONE); pDC[1]->StretchBlt(BmpX+fWidth,BmpY,rect[1].Width()/BmpScale,rect[1].Height()/BmpScale,&dc[1],0,0,bmp[1].bmWidth,bmp[1].bmHeight,SRCCOPY); ReleaseDC(pDC[1]);} else if(f) bitmap[2].LoadBitmap(IDB_BITMAP2); bitmap[2].GetBitmap(&bmp[2]); //CDC P=GetDC() pDC[2] = GetDC();// dc[2].CreateCompatibleDC(pDC[2]); dc[2].SelectObject(&bitmap[2]); GetClientRect(&rect[2]); pDC[2]->SetStretchBltMode(HALFTONE); pDC[2]->StretchBlt(BmpX+fWidth,BmpY,rect[2].Width()/BmpScale,rect[2].Height()/BmpScale,&dc[2],0,0,bmp[2].bmWidth,bmp[2].bmHeight,SRCCOPY); ReleaseDC(pDC[2]); point p; // point::point(0);// p.Draw(); if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialog::OnPaint(); }}图片切换控制void CGVisitDlg::OnBnClickedButup(){ // TODO: Add your control notification handler code here int iBtn; if(t) //切换线 { f; } else if(f) { t; } CGVisitDlg::OnPaint();} 进程间共享内存通信的简单演示 Graphics::DrawImage,显示一个300m左右的位图,放大2倍以上不能显示 树形控件中选择其他全部子节点? ATL组件注册的问题 关于设计数据库操作功能的封装类的问题, 大大给解决下。。 远程数据库访问(区区薄礼,不成敬意 暂送150分). 哈哈终于找到一个超全的下载计算机和其他书籍和视频的地方,不敢独享 怎样实现在dll中发完一个消息后,不用等待消息处理完就可以直接运行下面的程序 对话框的显示问题请教 为何通过ODBC访问dbf时总是出错? vc读取主引导扇区 jameshooo请进[来者都有分哈]
/* CBitmap bitmapPoint,bitmapLine,bitmapCaver,bitmapNavi;
BITMAP bmpPoi,bmpLine,bmpCaver,bmpNavi;
CDC dcPoi,dcLine,dcCaver,dcNavi;
CDC *pDCPoi,*pDCLine,*pDCCaver,*pDCNavi;
CRect rectPoi,rectLine,rectCaver,rectNavi;*/ CBitmap bitmap[9],bitmapTop,bitmapBot,bitmapIcon;
BITMAP bmp[9],bmpTop,bmpBot,bmpIcon;
CDC dc[9],dcTop,dcBot,dcIcon;
CDC *pDC[9],*pDCTop,*pDCBot,*pDCIcon;
CRect rect[9],rectTop,rectBot,rectIcon;显示代码如下: float BmpX=100,BmpY=40,BmpScale=7; bitmap[1].LoadBitmap(IDB_BITMAP1);
bitmap[1].GetBitmap(&bmp[1]);
//CDC P=GetDC()
pDC[1] = GetDC();// dc[1].CreateCompatibleDC(pDC[1]);
dc[1].SelectObject(&bitmap[1]);
GetClientRect(&rect[1]); pDC[1]->SetStretchBltMode(HALFTONE);
pDC[1]->StretchBlt(BmpX+fWidth,BmpY,rect[1].Width()/BmpScale,rect[1].Height()/BmpScale,&dc[1],0,0,bmp[1].bmWidth,bmp[1].bmHeight,SRCCOPY);
ReleaseDC(pDC[1]);
代码如下:
图片显示void CTestDlg::OnPaint()
{
//CDC *pdc;
float fWidth=0,fHeight=0;
float BmpX=100,BmpY=40,BmpScale=7;
CBitmap bitmap[9],bitmapTop,bitmapBot,bitmapIcon;
BITMAP bmp[9],bmpTop,bmpBot,bmpIcon;
CDC dc[9],dcTop,dcBot,dcIcon;
CDC *pDC[9],*pDCTop,*pDCBot,*pDCIcon;
CRect rect[9],rectTop,rectBot,rectIcon;
if(t)
{
bitmap[1].LoadBitmap(IDB_BITMAP1);
bitmap[1].GetBitmap(&bmp[1]);
//CDC P=GetDC()
pDC[1] = GetDC();// dc[1].CreateCompatibleDC(pDC[1]);
dc[1].SelectObject(&bitmap[1]);
GetClientRect(&rect[1]); pDC[1]->SetStretchBltMode(HALFTONE);
pDC[1]->StretchBlt(BmpX+fWidth,BmpY,rect[1].Width()/BmpScale,rect[1].Height()/BmpScale,&dc[1],0,0,bmp[1].bmWidth,bmp[1].bmHeight,SRCCOPY);
ReleaseDC(pDC[1]);
}
else if(f)
bitmap[2].LoadBitmap(IDB_BITMAP2);
bitmap[2].GetBitmap(&bmp[2]);
//CDC P=GetDC()
pDC[2] = GetDC();// dc[2].CreateCompatibleDC(pDC[2]);
dc[2].SelectObject(&bitmap[2]);
GetClientRect(&rect[2]); pDC[2]->SetStretchBltMode(HALFTONE);
pDC[2]->StretchBlt(BmpX+fWidth,BmpY,rect[2].Width()/BmpScale,rect[2].Height()/BmpScale,&dc[2],0,0,bmp[2].bmWidth,bmp[2].bmHeight,SRCCOPY);
ReleaseDC(pDC[2]); point p;
// point::point(0);
// p.Draw();
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}图片切换控制void CGVisitDlg::OnBnClickedButup()
{
// TODO: Add your control notification handler code here
int iBtn;
if(t) //切换线
{
f;
}
else if(f)
{
t;
}
CGVisitDlg::OnPaint();
}