在对话框中显示jpg图片

1、添加一个Picture Control,关联变量为 m_picture,定义一个全局变量CString m_path.

2、添加一个打开jpg图片的按钮,并添加按钮事件:void ...Dlg::OnOpen()。

void ...Dlg::OnOpen()

{

CFileDialog cfd(true,_T(".jpg"),NULL,OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,_T("Executable   Files   (*.jpg)|*.jpg|All   Files   (*.*)|*.*||"),this);     //选项图片的约定
 if(cfd.DoModal()!=IDOK)        //判断是否获得图片
 { 
  return;
 }
 m_path = cfd.GetPathName();    //获得图片路径
 UpdateData(false);             //更新路径公共变量
 ShowPicture();                 //调用显示图片函数

}

3、添加函数void ...Dlg::ShowPicture(void)。

void ...Dlg::ShowPicture(void)
{
 if(m_path=="")        //判断图片路径是否存在
 {
  return;
 }
 //AfxMessageBox(_T("读取到图片路径"));
 CRect rect;
 m_picture.GetClientRect(&rect);     //m_picture为Picture Control控件变量,获得控件的区域对象

 CImage image;       //使用图片类
 image.Load(m_path);   //装载路径下图片信息到图片类
 CDC* pDC = m_picture.GetWindowDC();    //获得显示控件的DC
 image.Draw( pDC -> m_hDC,rect);      //图片类的图片绘制Draw函数
 ReleaseDC(pDC);
}

4、在void ...Dlg::OnPaint()添加:

void ...Dlg::OnPaint()
{
 if (IsIconic())
 {
  ....

 }
 else
 {
  CDialog::OnPaint();
  CDialog::UpdateWindow(); //更新windows窗口
  ShowPicture();     //重绘图片函数

 }
}

1.若出现CImage未定义,则包含进头文件:#include <atlimage.h>.

2.若出现:stdafx.obj : error LNK2005: "class ATL::CStringT<char,class StrTraitMFC<char,class ATL::ChTraitsCRT<char> > > m_path" (?m_path@@3V?$CStringT@DV?$StrTraitMFC@DV?$ChTraitsCRT@D@ATL@@@@@ATL@@A)

说明头文件中的变量定义可能出问题了。

我是在stdafx.h头文件中定义了:

CString m_path; 出错;

后将此定义放到我的.C文件中直接定义,编译通过。


3.清除JPG图片:

CStatic* pStatic = (CStatic*)GetDlgItem(IDC_STATIC1);

pStatic->SetBitmap(NULL);

我用:

				m_picture.SetBitmap(NULL);
				UpdateData(false);             //更新路径公共变量
				ShowPicture();                 //调用显示图片函数


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 GUI 打开文件对话框并读取图片的方法因开发语言和 GUI 库的不同而有所差异。以下是一些常用语言的方法: - Python:使用 tkinter 库的 filedialog 模块,可以很方便地实现这个功能。例如: ``` from tkinter import filedialog from tkinter import * from PIL import Image root = Tk() root.filename = filedialog.askopenfilename(initialdir = "/", title = "选择图片文件", filetypes = (("图片文件", "*.jpg;*.png;*.jpeg"), ("所有文件", "*.*"))) img = Image.open(root.filename) img.show() ``` - Java:使用 Swing 类库的 JFileChooser 组件,可以实现这个功能。例如: ``` import javax.swing.*; import java.io.*; import java.awt.Image; import javax.imageio.ImageIO; JFileChooser fileChooser = new JFileChooser(); if (fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) { File file = fileChooser.getSelectedFile(); Image image = ImageIO.read(file); JLabel label = new JLabel(new ImageIcon(image)); JFrame f = new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.getContentPane().add(label); f.pack(); f.setLocation(200,200); f.setVisible(true); } ``` - C#:使用 WinForms 库的 OpenFileDialog 组件,可以实现这个功能。例如: ``` using System; using System.Drawing; using System.Windows.Forms; OpenFileDialog openFileDialog = new OpenFileDialog(); if (openFileDialog.ShowDialog() == DialogResult.OK) { Image image = Image.FromFile(openFileDialog.FileName); Form form = new Form(); form.Size = new Size(image.Width, image.Height); PictureBox pictureBox = new PictureBox(); pictureBox.Dock = DockStyle.Fill; pictureBox.Image = image; form.Controls.Add(pictureBox ); form.Show(); } ``` 希望这些代码对你 ### 回答2: 在GUI打开文件对话框并读取图片可以使用Python编程语言的Tkinter库来实现。 首先,我们需要导入Tkinter库和文件对话框功能模块`filedialog`。然后,我们可以创建一个GUI窗口。 接下来,我们可以创建一个函数来响应打开按钮的点击事件,并在函数使用`filedialog.askopenfilename()`函数调用文件对话框。这将弹出一个文件对话框,允许用户选择要打开的图片文件。选择文件后,该函数将返回选的文件的路径。 然后,我们可以使用`PIL`库(Pillow的一部分)的`Image`模块来读取图片文件。我们可以使用`Image.open()`函数并传入文件路径来打开图片文件。 最后,我们可以使用`Label`小部件将图片显示在GUI窗口。 以下是实现的代码示例: ```python import tkinter as tk from tkinter import filedialog from PIL import Image, ImageTk def open_file(): file_path = filedialog.askopenfilename() image = Image.open(file_path) photo = ImageTk.PhotoImage(image) label = tk.Label(window, image=photo) label.image = photo label.pack() window = tk.Tk() button = tk.Button(window, text="打开图片", command=open_file) button.pack() window.mainloop() ``` 这样,当打开按钮被点击时,将会弹出一个文件对话框,选图片后,图片将在GUI窗口显示出来。 ### 回答3: 在GUI(图形用户界面)打开文件对话框并读取图片十分常见且有用。下面是一个简单的步骤来实现这个功能: 1. 导入必要的模块和库:在Python,使用`tkinter`库来创建GUI界面。通过以下语句导入`tkinter`和`filedialog`模块: ```python import tkinter as tk from tkinter import filedialog from PIL import Image ``` 2. 创建GUI窗口:使用`tkinter`库创建一个窗口,通过`tk.Tk()`命令实现: ```python window = tk.Tk() ``` 3. 创建一个按钮控件:使用`tkinter`库的`Button`类创建一个按钮,用来打开文件对话框: ```python def open_dialog(): filepath = filedialog.askopenfilename(title="选择图片文件", filetypes=[("图片文件", "*.jpg;*.jpeg;*.png;*.gif")]) btn = tk.Button(window, text="打开文件", command=open_dialog) btn.pack() ``` 在`open_dialog()`函数,使用`filedialog.askopenfilename`方法打开文件对话框,并指定标题为"选择图片文件"。通过`filetypes`参数限制文件类型为图片文件。 4. 读取选择的图片文件:在`open_dialog()`函数,根据用户选择的文件路径,读取图片文件: ```python def open_dialog(): filepath = filedialog.askopenfilename(title="选择图片文件", filetypes=[("图片文件", "*.jpg;*.jpeg;*.png;*.gif")]) if filepath: image = Image.open(filepath) ``` 通过`Image.open(filepath)`方法读取选择的图片文件。需要注意的是,需要安装Pillow库才能使用`PIL`模块。 5. 显示图片:读取图片后,可以将其显示在GUI窗口。可以使用`tkinter`库的`Label`和`PhotoImage`类来实现: ```python def open_dialog(): filepath = filedialog.askopenfilename(title="选择图片文件", filetypes=[("图片文件", "*.jpg;*.jpeg;*.png;*.gif")]) if filepath: image = Image.open(filepath) tk_image = tk.PhotoImage(image) label = tk.Label(window, image=tk_image) label.pack() ``` 首先,将读取的图片文件转换为`PhotoImage`对象,然后使用`tk.Label`类创建一个标签,并将图片设置为该标签的图像。 6. 运行GUI窗口循环:在完成以上步骤后,使用`window.mainloop()`来启动GUI窗口的事件循环: ```python window.mainloop() ``` 这将使窗口一直保持打开状态,直到用户关闭窗口。 通过以上步骤,可以在GUI打开文件对话框并读取图片。用户只需要点击按钮,选择要打开的图片文件,然后选择的图片显示在GUI窗口
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值