首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GraphicsPath裁剪图像

使用GraphicsPath裁剪图像
EN

Stack Overflow用户
提问于 2012-07-19 06:52:33
回答 1查看 2.2K关注 0票数 0

我的问题是如何通过GraphicsPath裁剪图像。我有一个相当复杂的剪切路径(由不同的圆弧组成),我只需要保存图像在此路径中的那部分。

我有一个这样的类:

代码语言:javascript
复制
class A 
{
    private GraphicsPath GetGraphicsPath()
    { 
        ... some stuff ...
        return gp;
    }

    public void Draw(Graphics g)
    {
         g.DrawPath(pen, GetGraphicsPath());
    }

    public Save(Image img, string fileName)
    {
        Bitmap b = new Bitmap(img.Width, img.Height);
        Graphics bg = Graphics.FromImage(b);
        bg.Clip = new Region(GetGraphicsPath());
        bg.DrawImage(img, 0, 0);
        b.Save(fileName + ".png");
    }
}

然后我有一个带有面板pnMain的表单,带有一个背景图像。我有两个按钮,具有以下功能:

代码语言:javascript
复制
    private void button1_Click(object sender, EventArgs e)
    {
        Graphics g = pnMain.CreateGraphics();
        a.Draw(g);
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Image img = pnMain.BackgroundImage;
        a.Save(img, "test");
    }

(在这两种情况下,a都是A的实例)。我的问题是,在屏幕上绘制的剪切区域(使用第一个按钮和绘制方法)是我想保存的,但是,通过第二个按钮和保存方法保存的剪切图像被扭曲,变小和移动。我遗漏了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-19 07:07:49

我想出来了--它是面板中背景图像的分辨率。位图img的属性HorizontalResolution和VerticalResolution必须与图形的DPIX和DPIY属性匹配。我不知道如何通过C#来设置它们,但我能够在Photoshop中更改位图的分辨率,现在一切都正常了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11551529

复制
相关文章

相似问题

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