我的MVC4项目中有一个页面,用户可以使用文件上传控件添加公司徽标。然后,这些图像/徽标将在移动应用程序中显示在地图上。我们需要裁剪这些图像,使它们看起来像旗帜。
我们只需要拍摄旗帜框架内的部分图像,然后保留其余部分。
请建议我使用一些API和代码示例。
感谢。
更新:在某些网站中,当我们上传个人资料图片时,它会在顶部显示一个框架,我们选择的图片可以移动,以便所需的部分进入该框架。现在,当我们上传我们的个人资料图片时,它会调整为该大小。我可以在这做类似的事吗?在上面的框架中,我可以给出一个标志形状,用户可以移动上传的图像,以获得该帧中所需的图像部分。 这是正确的方法吗? 我们应该怎么做?我已经查看了一些jquery代码示例,但没有帮助。
答案 0 :(得分:1)
您可以使用SetClip函数和Region作为参数:
https://msdn.microsoft.com/en-us/library/x1zb278e(v=vs.110).aspx
因此,您需要从Bitmap创建Graphics对象,使用您的标志形状设置剪辑,然后在该Graphics对象上绘制图像。这就是全部。
答案 1 :(得分:0)
// Following code derives a cutout bitmap using a
// scizzor path as a clipping region (like Paint would do)
// Result bitmap has a minimal suitable size, pixels outside
// the clipping path will be white.
public static Bitmap ApplyScizzors(Bitmap bmpSource, List<PointF> pScizzor)
{
GraphicsPath graphicsPath = new GraphicsPath(); // specified Graphicspath
graphicsPath.AddPolygon(pScizzor.ToArray()); // add the Polygon
var rectCutout = graphicsPath.GetBounds(); // find rectangular range
Matrix m = new Matrix();
m.Translate(-rectCutout.Left, -rectCutout.Top); // translate clip to (0,0)
graphicsPath.Transform(m);
Bitmap bmpCutout = new Bitmap((int)(rectCutout.Width), (int)(rectCutout.Height)); // target
Graphics graphicsCutout = Graphics.FromImage(bmpCutout);
graphicsCutout.Clip = new Region(graphicsPath);
graphicsCutout.DrawImage(bmpSource, (int)(-rectCutout.Left), (int)(-rectCutout.Top)); // draw
graphicsPath.Dispose();
graphicsCutout.Dispose();
return bmpCutout;
}