使用picture控件动态显示图片方法

合集下载

picturebox的使用方式

picturebox的使用方式

picturebox的使用方式PictureBox是.NET Framework中的一种控件,用于在Windows窗体应用程序中显示图片。

以下是PictureBox的使用方式:1.添加PictureBox控件:在Visual Studio中,从工具箱拖拽PictureBox控件到窗体上。

2.加载图片:在设计阶段,可以通过Picture属性加载图片。

单击Picture属性后的“…”按钮,弹出“加载图片”对话框,选择所需的图片文件后加载。

另外,也可以在代码中通过LoadPicture函数加载图片。

例如:c#pictureBox1.Image = Image.FromFile("D:\\MyGif\\AniGif0562.gif");或c#pictureBox1.Image = new Bitmap("D:\\MyGif\\AniGif0562.gif");3.显示图片:通过PictureBox控件的SizeMode属性设置图片的显示模式。

SizeMode属性有9种模式,可以根据实际需求进行选择。

4.保存图片:可以通过访问PictureBox的Image属性,使用Bitmap类的Save方法将图片保存到文件中。

例如:c#pictureBox1.Image.Save("D:\\MyGif\\AniGif0562.gif",System.Drawing.Imaging.ImageFormat.Gif);5.删除图片:在设计阶段,可以通过按Delete键删除PictureBox控件,然后从工具箱拖拽一个新的PictureBox控件到窗体上。

或在属性对话框里的Picture属性,把“(位图)”这几个反白,或是移到“(”的最前端,按一下键盘的Delete键即可移除图片。

6.响应鼠标事件:可以通过编写事件处理程序,响应PictureBox控件的鼠标事件,例如单击、双击、鼠标移动等。

mfc中picture control使用

mfc中picture control使用

mfc中picture control使用在MFC中,Picture Control是一个用于显示图片的用户界面控件。

它通常用于在应用程序中展示图像内容。

以下是使用MFC中的Picture Control控件的步骤:1、添加Picture Control控件:在Visual Studio的设计视图中,打开你的对话框资源。

在工具箱中,找到Picture Control 控件并将其拖动到对话框上。

2、关联Picture Control控件与变量:选中Picture Control控件,在属性窗口中找到IDC_STATIC对应的ID,然后将其改为一个唯一的ID,比如IDC_PICTURE。

同时,在Class View中为该控件添加一个对应的变量,类型选择为CStatic。

3、加载并显示图片:在代码中找到对应的消息处理函数(例如OnInitDialog),然后使用以下代码加载并显示图片:cpp// 加载图片资源HRSRC hResource = FindResource(AfxGetResourceHandle(),MAKEINTRESOURCE(IDB_PICTURE), RT_RC);HGLOBAL hGlobal = LoadResource(AfxGetResourceHandle(), hResource);// 获取图片数据的指针LPCTSTR lpData = (LPCTSTR)LockResource(hGlobal);// 计算图片大小DWORD dwSize = SizeofResource(AfxGetResourceHandle(), hResource);// 创建位图对象CBitmap bitmap;bitmap.CreateFromBase(lpData, dwSize, NULL, LR_CREATEDIBSECTION);// 获取Picture Control控件的句柄HWND hWndPicture = GetDlgItem(IDC_PICTURE);// 创建兼容的DC(设备上下文)对象CDC compatibleDC;compatibleDC.CreateCompatibleDC(&compatibleDC);// 创建位图对象兼容的位图CBitmap* pOldBitmap = compatibleDC.SelectObject(&bitmap);// 将位图绘制到Picture Control控件上BitBlt(hWndPicture, 0, 0, bitmap.GetWidth(), bitmap.GetHeight(), &compatibleDC, 0, 0, SRCCOPY);// 释放资源compatibleDC.SelectObject(pOldBitmap);FreeResource(hGlobal);上述代码假设你的图片资源已经添加到资源文件中,并且资源的ID为IDB_PICTURE。

MFC 在对话框显示图片的多种方法

MFC 在对话框显示图片的多种方法

MFC 在对话框显示图片的多种方法我们先从简单的开始吧.先分一个类:(一) 非动态显示图片(即图片先通过资源管理器载入,有一个固定ID)(二) 动态载入图片(即只需要在程序中指定图片的路径即可载入)为方便说明,我们已经建好一个基于对话框的工程,名为Ttest.对话框类为CTestDlg(一) 非动态载入图片.方法1.先从最简单的开始,用picture 控件来实现. 步骤:先在资源里Import一张图片,ID为IDB_BITMAP2 然后在对话框上添加一个picture控件,右键点击打开属性,将type下拉框选择BITMAP,紧跟着下面就出现一个Image下拉框,拉开就会看到所有已经载入好的图片,选择你要的图片.运行程序即可看到.方法2.通过背景图同样如上,先载入一张图片,ID为IDB_BITMAP2 TestDlg.h中CBrush m_brBk;//在public中定义TestDlg.cpp中在初始化函数OnInitDialog()中加入:BOOL CTestDlg::OnInitDialog(){CDialog::OnInitDialog();CBitmap bmp;bmp.LoadBitmap(IDB_BITMAP2);m_brBk.CreatePatternBrush(&bmp);bmp.DeleteObject();...return TRUE; // return TRUE unless you set the focus to a control}在打开类向导,找到WM_CTLCOLOR消息,重载得对应函数OnCtlColor(),添加如下:HBRUSH CTestDlg::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor){HBRUSH hbr =CDialog::OnCtlColor(pDC, pWnd, nCtlColor);if (pWnd == this){return m_brBk;}return hbr;}(二) 动态载入图片.方法3 图像控件(本例用KoDak 图像编辑控件)1. 首先应该保证系统中有这个控件。

winform picturebox 用法 -回复

winform picturebox 用法 -回复

winform picturebox 用法-回复Winform PictureBox 用法PictureBox 是用于在Winform 应用程序中显示图像的控件。

它提供了一种简单的方式来加载、显示和操作图像。

在本文中,我们将一步一步地探索Winform PictureBox 的用法。

1. 创建PictureBox首先,在Visual Studio 的Winform 应用程序中创建一个新的窗体。

然后,从工具箱中拖动一个PictureBox 控件到窗体上。

您可以调整PictureBox 的大小和位置,以适应窗体。

2. 设置图片要设置PictureBox 的图像,可以通过以下两种方式之一来完成。

- 通过代码设置图片:要动态设置PictureBox 的图像,可以使用以下代码片段:pictureBox1.Image = Image.FromFile("image.jpg");这将从文件路径加载一个图像,并将其设置为PictureBox 的图像。

- 使用设计器设置图片:另一种设置PictureBox 图像的方法是使用设计器。

选择PictureBox 控件,然后在“属性窗格”中找到“Image”属性。

点击“...”按钮以浏览您的计算机并选择要加载的图像文件。

无论您选择哪种方法,都可以使用绝对路径或相对路径来设置图像。

3. 调整图像大小PictureBox 提供了一些选项来调整图像在控件中的大小。

这些选项可以在属性窗格的“SizeMode”属性中找到。

以下是几种常用的调整大小选项:- Normal:图像在控件内保持原始的大小。

- StretchImage:图像将自动缩放以适应PictureBox 的大小,保持纵横比。

- AutoSize:控件将根据图像的大小调整自身的大小。

- CenterImage:图像将在控件中居中显示。

您可以根据需要选择适合您应用程序的调整大小选项。

4. 图片布局和对齐PictureBox 还提供了布局和对齐选项,以确保图像在控件中得到正确的显示。

picturebox控件用法 -回复

picturebox控件用法 -回复

picturebox控件用法-回复关于PictureBox控件的用法,我们一步一步来进行详细解析。

首先,PictureBox控件是Windows Forms中常用的一个控件,它用于在窗体上展示图片。

通过该控件,我们可以在界面中加载、显示和管理图片。

1. 创建PictureBox控件:要使用PictureBox控件,首先需要在窗体上创建一个PictureBox控件。

在Visual Studio中,可以通过拖拽方式将PictureBox控件放置于窗体中。

2. 设置PictureBox控件的属性:对于PictureBox控件,我们可以通过设置其各种属性来控制显示效果。

以下是一些常用的属性:- Image:设置PictureBox中要显示的图片。

可以通过指定图片文件路径或者使用Image类加载图片。

- SizeMode:设置图片在PictureBox中的显示方式,包括自动尺寸、拉伸、居中等等。

- BorderStyle:设置PictureBox的边框样式,包括无边框、固定单线边框、三维边框等。

- BackColor:设置PictureBox的背景颜色。

3. 加载图片:一旦PictureBox控件创建并设置好属性,我们可以通过编程方式加载图片。

例如,可以使用Image类将图片加载到PictureBox中:csharppictureBox1.Image = Image.FromFile("image.jpg");或者,可以使用OpenFileDialog控件让用户选择图片文件:csharpOpenFileDialog openFileDialog1 = new OpenFileDialog();if (openFileDialog1.ShowDialog() == DialogResult.OK){pictureBox1.Image =Image.FromFile(openFileDialog1.FileName);}4. 显示图片:一旦图片加载到PictureBox中,控件会自动显示该图片。

VS2010利用MFC的Picture控件显示和处理图像

VS2010利用MFC的Picture控件显示和处理图像

利用 MFC 的 Picture 控件显示和处理图像在《OpenCV 教程-基础篇》的 2.8 节中,所创建的 MFC 图像显示是直接放在对话框面板的左上 角的,感觉不大美观;《MFC 中快速应用 OpenCV》 则是介绍用 SDI(单文档界面)来显示图 像,《A step-by-step guide to the use of Microsoft Visual C++ and the Intel OpenCV library》 使用 VS2005 来进行图像和视频的读取和处理,但是其图像和视频的显示界面不是在对话框里面 的,而是新建一个窗口来做。

所以下面我们就来看看怎么在对话框里使用 Picture 控件来显示和 处理图像。

[编辑]创建 MFC首先创建一个 MFC 对话框应用程序(Dialog-based Application)如下:在 VS2005 和 2008 里,我们可以用一个 Solution 来组合几个 Project (每个 Project 基本上 只包含一个 Program),当我们要构建一个多 Program 的应用时(例如一个客户端程序加一个 服务器应用程序),利用 Solution 可以将这些 Projects 组合起来、并且共享文件和函数库。

通常需要为 Solution 创建一个主路径,其中包含了所有 Projects 的路径。

不过在这篇文章里, 我们只构建一个简单的 Project,所以在创建 MFC 的 New Project 对话框里,不用勾选“Create directory for solution”这个选项。

点击 OK -- Next 进入下一步,在这里我们创建一个 Dialog-based Application,大部分选项按默 认设置就行,不过最下面的“Use Unicode libraries”最好去掉。

如果勾选了这个选项,程序代码 就会使用 16bit 的 Unicode 字符集来编码,但是很多函数虽然使用 char* (ASCII stings) 类型字 符,而将字符串从 Unicode 转换到 ASCII 是非常麻烦的。

MFC利用图像数据在Picture控件中显示

MFC利用图像数据在Picture控件中显示

MFC利用图像数据在Picture控件中显示2011-06-15 19:55:21| 分类:默认分类| 标签:mfc 数据数组显示|举报|字号大中小订阅在网上一直搜不到利用图像数据显示的代码,后来自己忙活了几天总算是搞定了。

CDC* pDC=GetDC(); //获得当前窗口句柄CRect rcBmp;GetDlgItem(IDC_IMAGEVIEW)->GetWindowRect(rcBmp); //IDC_IMAGEVIEW是picture控件IDScreenToClient(&rcBmp);BITMAPINFO *m_pBMI = (BITMAPINFO*)new BYTE[sizeof(BITMAPINFOHEADER)+256*sizeof(RGBQUAD)];m_pBMI->bmiHeader.biBitCount = 24;// 24位图像数据结构,需要用3个BYTE的数据类型构造m_pBMI->bmiHeader.biClrImportant = 0;m_pBMI->bmiHeader.biCompression = 0;m_pBMI->bmiHeader.biHeight = -image_rawHeight; //负号使显示的图像不出现倒置情况,因为图像是自底向上填写的m_pBMI->bmiHeader.biClrUsed =256;//0;m_pBMI->bmiHeader.biPlanes = 1;m_pBMI->bmiHeader.biSize = 40;m_pBMI->bmiHeader.biSizeImage = image_rawHeight*image_rawWidth*3;//m_pBMI->bmiHeader.biWidth = image_rawWidth;m_pBMI->bmiHeader.biXPelsPerMeter = 0;m_pBMI->bmiHeader.biYPelsPerMeter =0;for(int i = 0; i<256;i++){m_pBMI->bmiColors[i].rgbBlue =i;m_pBMI->bmiColors[i].rgbGreen =i;m_pBMI->bmiColors[i].rgbRed =i;m_pBMI->bmiColors[i].rgbReserved = 0;}SetDIBitsToDevice(pDC->m_hDC,rcBmp.left,rcBmp.top,rcBmp.Width(),rcBmp.Height(),0,0,0,image_rawHeight,Gray,m_pBMI,DIB_RGB_COLORS); ////////struct Pixel{BYTE gray[3];};Pixel *Gray=new Pixel[numPixels];上述Gray的声明过程。

常用控件:图片控件Picture Control

常用控件:图片控件Picture Control

上一节中鸡啄米讲的是滚动条控件,本节主要讲一种简单实用的控件,图片控件Picture C ontrol。

我们可以在界面某个位置放入图片控件,显示图片以美化界面。

图片控件简介图片控件和前面讲到的静态文本框都是静态文本控件,因此两者的使用方法有很多相同之处,所属类都是CStatic类,有关成员函数已在前面介绍,这里就不重复了。

图片控件静态和动态加载图片鸡啄米下面为大家演示如何为图片控件静态和动态加载位图图片。

1. 图片控件静态加载图片1)创建一个基于对话框的MFC工程,名称设置为“Example27”。

2)准备一张Bitmap图片,名称设为“test.bmp”,放到工程的res文件夹中,res文件夹路径为...\Example27\Example27\res。

鸡啄米在这里用的是一张鸡啄米网站的截图。

3)在Resource View中的“Example27.rc*”节点上点右键,选择“Add Resource...”,弹出“Add Resource”对话框:然后在左侧的“Resource Type”中选择“Bitmap”,点按钮“Import”,显示一个文件对话框,我们选择res文件夹中的test.bmp图片文件,导入成功后会在Resource View的Exa mple27.rc*节点下出现一个新的子节点“Bitmap”,而在“Bitmap”节点下可以看到刚添加的位图资源IDB_BITMAP1,这里的默认ID就不修改了。

4.)在自动生成的对话框模板IDD_EXAMPLE27_DIALOG中,删除“TODO: Place di alog controls here.”静态文本控件、“OK”按钮和“Cancel”按钮。

添加一个Picture Control 控件,在图片控件的属性页中有一个Type属性,Type属性下拉列表中有8种类型,下面分别介绍下:Frame:显示一个无填充的矩形框,边框颜色可以通过Color属性的下拉列表设定Etched Horz:显示一条横分割线Etched Vert:显示一条竖分割线Rectangle:显示一个填充的矩形框,矩形颜色可通过Color属性的下拉列表设定Icon:显示一个图标(Icon),图标通过Image 下拉列表来设置图标资源IDBitmap:显示一个位图(Bitmap),位图通过Image 下拉列表来设置位图资源IDEnhanced Metafile:显示一个加强的元数据文件(Metafile)Owner Draw:自绘因为我们要加载的是位图图片,所以Type属性选择Bitmap。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
IStream *pStm;
CFileStatus fstatus;
CFile file;
LONG cb;
IPicture *pPic;//定义显示图片的接口(可显示jpg格式图片)
CString m_sPath="1.BMP";//设置想要显示的图片
//打开图象文件,获取文件字节数
if(file.Open(m_sPath,CFile::modeRead) && file.GetStatus(m_sPath,fstatus)
int nHeight=MulDiv(hmHeight,pDC->GetDeviceCaps(LOGPIXELSX),2540);
//在内存中画
CDC MenDC;
CBitmap bmp;
bmp.CreateCompatibleBitmap(pDC,nWidth,nHeight);
MenDC.CreateCompatibleDC(NULL);
dc.BitBlt(rcclient.left,rcclient.top,rcclient.Width(),rcclient.Height(),&memdc,
rcclient.left,rcclient.top,SRCPAINT);
brush.DeleteObject();
二图片适用于控件尺寸
添加一个picture控件,修改ID为IDC-PICTURE
}
return true;
}
然后在OnPaint()函数中显示
void CDialogDlg::OnPaint()
{
CPaintDC dc(this); // device context for painting
if (IsIconic())
{
SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);
CBitmap bitmap;
bitmap.CreateCompatibleBitmap(&dc,rcclient.Width(),rcclient.Height());
memdc.SelectObject(&bitmap);
CWnd::DefWindowProc(WM_PAINT,(WPARAM)memdc.m_hDC,0);
MenDC.SelectObject(&bmp);
m_pPicture->Render(MenDC.m_hDC,0,0,nWidth,nHeight,0,hmHeight,hmWidth,-hmHeight,NULL);
//将内存中画拷贝到目的地
pDC->BitBlt(0,0,nWidth,nHeight,&MenDC,0,0,SRCCOPY);
pPic->Release();
}
图片显示通用模块
首先为类添加如下两个函数和一个成员变量IPicture* m_pPicture;
//图片加载函数
HRESULTLoadFromBuffer(BYTE *pBuff, int nSize)
{
bool bResult=false;
HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,nSize);//分配内存空间
//获得加载位图的文件信息
m_bmp.Attach(hbmp);
DIBSECTION ds;
BITMAPINFOHEADER &bminfo=ds.dsBmih;//获得位图信息图
m_bmp.GetObject(sizeof(ds),&ds);
int cx=bminfo.biWidth;//获得位图宽度
}
//图片显示函数
BOOLDrawFromFile(CString filename, CDC *pDC)
{
CFile cFile;
CFileException e;
//打开文件
if(cFile.Open(filename,CFile::modeRead | CFile::typeBinary,&e))
//以绝对路径加载BMP图片
HBITMAP hbmp=(HBITMAP)::LoadImage(AfxGetInstanceHandle(),"1.bmp",IMAGE_BITMAP,
0,0,LR_CREATEDIBSECTION | LR_LOADFROMFILE);
if(hbmp==NULL) return false;
使用picture控件动态显示图片方法
一控件适应于图片尺寸
添加一个picture控件,修改ID为IDC-PICTURE,并添加一CBitmap m_bmp成员变量
在OnInitDialog()函数中添加如下代码
if(m_bmp.m_hObject!=NULL) m_bmp.DeleteObject();
//CPaintDC dc(this);
//CDC dc;
//dc.m_hDC=::GetDC(NULL);
CRect rcclient;
GetDlgItem(IDC_PICTRUE)->GetClientRect(&rcclient);
CDC memdc;
memdc.CreateCompatibleDC(&dc);
void *pData=GlobalLock(hGlobal);//定义图象数据指针
memcpy(pData,pBuff,nSize);
GlobalUnlock(hGlobal);//释放内存空间
IStream *pStream=NULL;//定义数据流指针
//创建数据流
if(CreateStreamOnHGlobal(hGlobal,TRUE,&pStream)==S_OK)
{
OLE_XSIZE_HIMETRIC hmWidth;
OLE_XSIZE_HIMETRIC hmHeight;
pPic->get_Width(&hmWidth);//获得图象真实宽度
pPic->get_Height(&hmHeight);//获得图象真实高度
//在控件上显示图片pPic->Render(*pDC,0,0,rect.Width(),rect.Height(),0,hmHeight,hmWidth,-hmHeight,NULL);
&& ((cb=fstatus.m_size)!=-1))
{
//分配全局存储空间
HGLOBAL hGlobal=GlobalAlloc(GMEM_MOVEABLE,cb);
LPVOID pvData=NULL;
if(hGlobal!=NULL)
{
//锁定分配内存块
if((pvData=GlobalLock(hGlobal))!=NULL)
maskdc.BitBlt(0,0,rcclient.Width(),rcclient.Height(),&memdc,rcclient.left,rcclient.top,SRCCOPY);
CBrush brush;
brush.CreatePatternBrush(&m_bmp);
dc.FillRect(rcclient,&brush);
int cy=bminfo.biHeight;//获得位图高度
//该段程序根据图象的宽和高,调整控件大小,让它正好显示一张图片
CRect rect;
GetDlgItem(IDC_PICTRUE)->GetWindowRect(&rect);//获得控件所在矩形区域
ScreenToClient(&rect);
GetDlgItem(IDC_PICTRUE)->MoveWindow(rect.left,rect.top,cx,cy,true);//调整控件大小
在OnPaint()函数中添加如下代码
//三种方法获得pictrue控件DC,图象将被绘制在控件上
CPaintDC dc(GetDlgItem(IDC_PICTRUE));
CDC maskdc;
maskdc.CreateCompatibleDC(&dc);
CBitmap maskbitmap;
maskbitmap.CreateBitmap(rcclient.Width(),rcclient.Height(),1,1,NULL);
maskdc.SelectObject(&maskbitmap);
{
HRESUure(pStream,nSize,FALSE,IID_IPicture,(LPVOID*)&m_pPicture))==S_OK)
bResult=true;
pStream->Release();//释放数据流
}
return bResult;
int y = (rect.Height() - cyIcon + 1) / 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CString filename;
filename="1.bmp";
DrawFromFile(filename,&dc);
{
//读入文件到内存缓冲区
file.ReadHuge(pvData,cb);
GlobalUnlock(hGlobal);
CreateStreamOnHGlobal(hGlobal,true,&pStm);
相关文档
最新文档