C#中 如何在picturebox中显示图片

我想要把pictureBox1中的图片进行旋转后放入控件pictureBox2中,代码如下:privatevoid旋转图像ToolStripMenuItem_Click(... 我想要把pictureBox1中的图片进行旋转后放入控件pictureBox2中,代码如下:
private void 旋转图像ToolStripMenuItem_Click(object sender, EventArgs e)
{
Bitmap box1 = new Bitmap(pictureBox1.Image);//把图片框中的图片给一个bitmap类型
Bitmap box2 = new Bitmap(pictureBox1.Image);
Graphics g = pictureBox2.CreateGraphics();
g.Clear(this.pictureBox2.BackColor);
float x =(float)Double.Parse(textBox1.Text);
g.RotateTransform(x);//旋转x角度
g.DrawImage(box1, this.pictureBox2.ClientRectangle, 0, 0, box2.Width, box2.Height, GraphicsUnit.Pixel);//图片框2重画
}

执行后,pictureBox2中确实显示了旋转后的图片,但是似乎图片仅限于在屏幕上显示,而没有放入到pictureBox2.image中,而且后面对pictureBox2中这个图像也不能进行操作。如果用下面的代码测试:
if (pictureBox2.Image == null)
MessageBox.Show("null");
则会弹出null消息框。

我想问:
怎么将图片放到pictureBox2.image中,便于后续操作。
或者,graphics类与bitmap如何转化?

还有问题,虽然图片在pictureBox2中显示了,但是最小化后,图片就不见了,怎么解决这个问题?
1楼的回答我试了一下,似乎要using system.windows.media
但是又产生了错误,貌似是system.windows.media和system.drawing冲突了。
里面的color类等不能明确是哪个命名空间下的。
请问这个问题怎么解决。。万分谢谢。。。

PS:PresentationCore已经添加引用了。
展开
 我来答
Higer爱Susan
2010-04-27 · TA获得超过918个赞
知道小有建树答主
回答量:508
采纳率:0%
帮助的人:454万
展开全部
不要using system.windows.media
在提升你需要该引用的地方System.Drawing.Image
或者将鼠标移动到提示有问题的地方捕获一下那个小方格,然后选择System.Drawing.Image 这样就行了

private void button1_Click(object sender, EventArgs e)
{
Bitmap box2 = new Bitmap(pictureBox1.Image);
float x = (float)Double.Parse(textBox1.Text);
box2 = RotateBitmap(box2, x, this.pictureBox2.BackColor);
System.Drawing.Image image = System.Drawing.Image.FromHbitmap(box2.GetHbitmap());
pictureBox2.Image = image;
}

public Bitmap RotateBitmap(Bitmap bmp, float angle, Color bkColor)
{
int w = bmp.Width + 2;
int h = bmp.Height + 2;

PixelFormat pf;

if (bkColor == Color.Transparent)
{
pf = PixelFormat.Format32bppArgb;
}
else
{
pf = bmp.PixelFormat;
}

Bitmap tmp = new Bitmap(w, h, pf);
Graphics g = Graphics.FromImage(tmp);
g.Clear(bkColor);
g.DrawImageUnscaled(bmp, 1, 1);
g.Dispose();

GraphicsPath path = new GraphicsPath();
path.AddRectangle(new RectangleF(0f, 0f, w, h));
Matrix mtrx = new Matrix();
mtrx.Rotate(angle);
RectangleF rct = path.GetBounds(mtrx);

Bitmap dst = new Bitmap((int)rct.Width, (int)rct.Height, pf);
g = Graphics.FromImage(dst);
g.Clear(bkColor);
g.TranslateTransform(-rct.X, -rct.Y);
g.RotateTransform(angle);
g.InterpolationMode = InterpolationMode.HighQualityBicubic;
g.DrawImageUnscaled(tmp, 0, 0);
g.Dispose();

tmp.Dispose();

return dst;
}

参考资料: http://hi.baidu.com/bruttle/blog/item/d6b5488de0fe5413b21bba25.html

hongjmoil
2010-04-19 · TA获得超过139个赞
知道答主
回答量:263
采纳率:0%
帮助的人:153万
展开全部
picturebox2.Image = Icon.ExtractAssociatedIcon(picturebox1.Image).ToBitmap();
貌似是这样的!
我没试 你试试 至少是个机会
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式