首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载的图片编辑

加载的图片编辑
EN

Stack Overflow用户
提问于 2013-01-23 12:22:48
回答 2查看 1.6K关注 0票数 1

我应该从一个文件中加载一个图像,这个图像应该覆盖pictureBox的80%,然后在上面绘制一些东西…使用加载没有问题,但是尝试在上面绘制任何内容都会导致错误,该错误具有不正确的参数(g.FillRectangle...)。

我在堆栈上找到了刷新pictureBox的建议,但它什么也改变不了……

我不知道该怎么解决这个问题。

代码语言:javascript
复制
private void button1_Click_1(object sender, EventArgs e)
{
    pictureBox1.Width = (int)(Width * 0.80);
    pictureBox1.Height = (int)(Height * 0.80);

    // open file dialog 
    OpenFileDialog open = new OpenFileDialog();
    // image filters
    open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
    if (open.ShowDialog() == DialogResult.OK)
    {
        // display image in picture box
        pictureBox1.Image = new Bitmap(open.FileName);
        // image file path
        //  textBox1.Text = open.FileName;
        g.FillRectangle(Brushes.Red, 0, 0, 20, 50);
        pictureBox1.Refresh();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-23 12:29:46

使用Graphics.FromImageControl.CreateGraphics方法在图像上绘制:

代码语言:javascript
复制
var img = new Bitmap(open.FileName);
using (Graphics g = Graphics.FromImage(img))
{
    g.FillRectangle(Brushes.Red, 0, 0, 20, 50);  
}
pictureBox1.Image = img;

或者通过Paint事件直接在PictureBox上绘制(例如使用Anonymous Methods):

代码语言:javascript
复制
pictureBox1.Paint += (s, e) => e.Graphics.FillRectangle(Brushes.Red, 0, 0, 20, 50);
票数 0
EN

Stack Overflow用户

发布于 2013-01-23 12:47:49

下面的代码对我来说工作得很好...你能试一下同样的吗?

代码语言:javascript
复制
private void button1_Click(object sender, EventArgs e)
        {
            pictureBox1.Width = (int)(Width * 0.80);
            pictureBox1.Height = (int)(Height * 0.80);


            // open file dialog 
            OpenFileDialog open = new OpenFileDialog();

            // image filters
            open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
            if (open.ShowDialog() == DialogResult.OK)
            {
                // display image in picture box
                pictureBox1.Image = new Bitmap(open.FileName);
                // image file path
                //  textBox1.Text = open.FileName;
                Graphics g = Graphics.FromImage(pictureBox1.Image);
                g.FillRectangle(Brushes.Red, 0, 0, 20, 50);
                pictureBox1.Refresh();
            }
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14472411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档