GDI+ 如何将图片绘制成圆形的图片

简介: 大概意思就是不生成新的图片,而是将图片转换为圆形图片。实现代码如下:private Image CutEllipse(Image img, Rectangle rec, Size size){ Bitmap bitmap = new Bitmap(size.

大概意思就是不生成新的图片,而是将图片转换为圆形图片。

这里写图片描述

实现代码如下:

private Image CutEllipse(Image img, Rectangle rec, Size size)
{
    Bitmap bitmap = new Bitmap(size.Width, size.Height);
    using (Graphics g = Graphics.FromImage(bitmap))
    {
        using (TextureBrush br = new TextureBrush(img,System.Drawing.Drawing2D.WrapMode.Clamp, rec))
        {
            br.ScaleTransform(bitmap.Width / (float)rec.Width, bitmap.Height / (float)rec.Height);
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
            g.FillEllipse(br, new Rectangle(Point.Empty, size));
        }
    }
    return bitmap;
}

然后调用方法即可。

Image image = this.pictureBox1.Image;
Image newImage = CutEllipse(image, new Rectangle(0, 0, 150, 150), new Size(150, 150));
this.pictureBox2.Image = newImage;

那么用WPF如何实现?实现就更简单了,不需要写后台代码,直接利用XAML即可。

<Grid>
        <Ellipse Height="150" Width="150">
            <Ellipse.Fill>
                <ImageBrush ImageSource="Image/1_guwei4037.jpg" ></ImageBrush>
            </Ellipse.Fill>
        </Ellipse>
</Grid>

————————————————————————————————————

群里的@陈应钦对如上的方法提出一个问题,就是如上的方法图形的下边缘和右侧边缘是一条直线,并不是平滑的曲线。细心观察确实如此。

原因是我画到了picturebox控件中,本身picturebox控件border就占长度,正好又画满控件,所以右边和下边都是直线了(空间不够了)。

所以解决方案有两个:可以直接绘制到不占空间的区域(比如窗体中指定的Rectangle),或者将绘制图形的长和宽缩小一点。

目录
相关文章
|
5月前
根据图片获取图片中最多的颜色
根据图片获取图片中最多的颜色
|
7月前
|
前端开发 API 计算机视觉
opencv绘制基本图形,在图片上添加文字
opencv绘制基本图形,在图片上添加文字
|
7月前
|
数据可视化 定位技术 开发者
黑白或彩色线稿地图设计定制装饰画中线条轮廓素材底图获取方法合集
黑白或彩色线稿地图设计定制装饰画中线条轮廓素材底图获取方法合集
|
算法 定位技术 C#
C#开发:不规则裁切图片
C#开发:不规则裁切图片
159 0
|
前端开发 Android开发
制作圆形图片,你会以下几种?
制作圆形图片,你会以下几种?
制作圆形图片,你会以下几种?
|
计算机视觉
三天学会opencv(七)——绘制形状与文字
三天学会opencv(七)——绘制形状与文字
136 0
|
移动开发 缓存 前端开发
H5画布 canvas(二)绘制文字、图片、坐标系,canvas颜色和样式,canvas绘制环境
H5画布 canvas(二)绘制文字、图片、坐标系,canvas颜色和样式,canvas绘制环境
622 0
H5画布 canvas(二)绘制文字、图片、坐标系,canvas颜色和样式,canvas绘制环境
3D立方体图片切换动画
在线演示 本地下载
1006 1
|
C# 小程序
给图片加上阴影效果
原文:给图片加上阴影效果 今天写一个小程序有一个给图片加上阴影的需求,记得WPF的Effect中就有阴影特效,就打算用它了。代码如下:     using (var imageStreamSource = File.
1214 0
|
C# 图形学 索引
上传图片时,使用GDI+中重绘方式将CMYK图片转为RGB图片
原文:上传图片时,使用GDI+中重绘方式将CMYK图片转为RGB图片 我们知道,如果网站上传图片时,如果用户上传的是CMYK图片,那么在网站上将是无法显示的,通常的现象是出现一个红叉。
1219 0