如何点击pictureBox_MouseDown 事件加载硬盘上的图片,显示到pictureBox中

hinada99 2010-12-25 03:29:30
RT
我的代码如下,"D:\\VS08code\\NET_Test\\Draw\\Blackqi.jpg"是真实存在的jpg图片。想实现的效果就是点击一下pictureBox1,pic就会在pictureBox1上显示出来
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
PictureBox pic = new PictureBox();
pic.Size = new System.Drawing.Size(50, 50);
pic.Location = new System.Drawing.Point(e.X, e.Y);
pic.ImageLocation = "D:\\VS08code\\NET_Test\\Draw\\Blackqi.jpg";
this.Controls.Add(pic);
pic.BringToFront();
}
在线等待高手解答
...全文
206 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelan1748 2010-12-25
  • 打赏
  • 举报
回复

[System.Runtime.InteropServices.DllImport("user32.dll", CharSet=CharSet.Auto)]
extern static bool DestroyIcon(IntPtr handle);

private void GetHicon_Example(PaintEventArgs e)
{

// Create a Bitmap object from an image file.
Bitmap myBitmap = new Bitmap(@"c:\FakePhoto.jpg");

// Draw myBitmap to the screen.
e.Graphics.DrawImage(myBitmap, 0, 0);

// Get an Hicon for myBitmap.
IntPtr Hicon = myBitmap.GetHicon();

// Create a new icon from the handle.
Icon newIcon = Icon.FromHandle(Hicon);

// Set the form Icon attribute to the new icon.
this.Icon = newIcon;

// Destroy the Icon, since the form creates
// its own copy of the icon.
DestroyIcon(newIcon.Handle);

}

参考Bitmap.GetHicon()
hinada99 2010-12-25
  • 打赏
  • 举报
回复
提示:
参数“picture”必须是可用作 Icon 的图片。

指向:
Icon icon = new Icon("D:\\VS08code\\NET_Test\\Draw\\Draw\\Blackqi.jpg");
hinada99 2010-12-25
  • 打赏
  • 举报
回复
hinada99 2010-12-25
  • 打赏
  • 举报
回复

//仿写12楼的代码,试图将jpg存成ico
private void button1_Click(object sender, EventArgs e)
{
SaveFileDialog sf = new SaveFileDialog();
if(sf.ShowDialog()==DialogResult.OK)
{
Icon icon = new Icon("D:\\VS08code\\NET_Test\\Draw\\Draw\\Blackqi.jpg");
icon.Save(sf.OpenFile());

}


}
lovelan1748 2010-12-25
  • 打赏
  • 举报
回复

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
using (OpenFileDialog of = new OpenFileDialog())
{
if (of.ShowDialog() == DialogResult.OK)
{
//pictureBox1.Image = Image.FromFile(of.FileName);
Icon icon = new Icon(of.FileName);
icon.Save(stream);
}
}
}
lovelan1748 2010-12-25
  • 打赏
  • 举报
回复

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
using (OpenFileDialog of = new OpenFileDialog())
{
if (of.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(of.FileName);
}
}

}
hinada99 2010-12-25
  • 打赏
  • 举报
回复
好吧
现在的问题是 如何将 jpg存成 ico
直接改 扩展名 不行~
lovelan1748 2010-12-25
  • 打赏
  • 举报
回复

private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
using (OpenFileDialog of = new OpenFileDialog())
{
if (of.ShowDialog() == DialogResult.OK)
{
pictureBox1.Image = Image.FromFile(of.FileName);
}
}

}
CXH_ME 2010-12-25
  • 打赏
  • 举报
回复
把名字改一下,MouseDown会覆盖基类的一个同名函数
另外,不需要那么多代码,如下就行
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
pictureBox1.ImageLocation = "D:\\VS08code\\NET_Test\\Draw\\Blackqi.jpg";
pictureBox1.BringToFront();
}
hinada99 2010-12-25
  • 打赏
  • 举报
回复
Icon ic = new Icon("绝对路径");
Graphics g = Graphics.FromHwnd(this.pictureBox1.Handle);
g.DrawIcon(ic, e.X, e.Y);

这样就行了
qldsrx 2010-12-25
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hinada99 的回复:]
自己先顶一个
希望 wuqll快点看到我的帖子
[/Quote]
你为啥不自己去用Google之类的搜索引擎?他就是这么搜索了贴链接的,别指望过多的指导,只有链接或者复制别人的代码。

你的思维混乱,this.Controls.Add(pic);这句中,this是Form窗体,
pic.Location = new System.Drawing.Point(e.X, e.Y);中的坐标是相对pictureBox1的坐标,你不转换为相对Form的坐标,让Form怎么能正确摆放你的控件?而且这还涉及到互相覆盖的问题,你已经存在的pictureBox1上面叠加一个pictureBox2的话,谁覆盖谁还未知,显然是思维混乱。
hinada99 2010-12-25
  • 打赏
  • 举报
回复
会4#
挂在mouse_down事件上
Mouse_down的时候,e.X,e.Y位置会被 “红叉和Size(50, 50)”填充,也就是说,加载了图片,但是图片没有显示出来
我直接去路径下 打开图片,图片却能正常显示
lovelan1748 2010-12-25
  • 打赏
  • 举报
回复
逻辑乱七八糟,感觉自己机器好还是怎么的。。。
敢问你的pictureBox1_MouseDown挂在MouseDown事件上了吗
hinada99 2010-12-25
  • 打赏
  • 举报
回复
我的不行呀
图片显示不出来
xingsheng7 2010-12-25
  • 打赏
  • 举报
回复
可以啊,我试了下,可以啊
hinada99 2010-12-25
  • 打赏
  • 举报
回复
自己先顶一个
希望 wuqll快点看到我的帖子

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧