.net - DrawImage 中的灰色边框(.NET system.drawing.drawing2D)
问题描述
我正在尝试使用 C# 在位图上创建图像。不知何故,它总是在图像的所有侧面添加灰色边框。该解决方案已发布了许多问题,我几乎尝试了所有问题,但没有一个有效。
我正在使用的代码:
Bitmap appearance = new Bitmap(490, 196, PixelFormat.Format32bppArgb);
using (Graphics graphics = Graphics.FromImage(appearance))
{
graphics.InterpolationMode = InterpolationMode.HighQualityBicubic;
graphics.SmoothingMode = SmoothingMode.AntiAlias;
graphics.PixelOffsetMode = PixelOffsetMode.Half;
graphics.CompositingMode = CompositingMode.SourceCopy;
using (ImageAttributes wrapMode = new ImageAttributes())
{
wrapMode.SetWrapMode(WrapMode.TileFlipXY);
Rectangle destination = new Rectangle(5, 99, 240, 94);
graphics.DrawImage(img, destination, 0, 0, img.Width, img.Height, GraphicsUnit.Pixel, wrapMode);
}
}
appearance.Save("F:\\SignatureAppearance.jpeg");
谁能帮我?灰色边框在缩小时不显示,但随着开始放大,边框开始出现。
任何帮助将不胜感激
我试图创建一个带有白色背景的图像,即使它有右边框和下边框。
Bitmap appearance = new Bitmap(490, 196, PixelFormat.Format32bppArgb);
using (Graphics graphics = Graphics.FromImage(appearance)) {
// graphics.Clear(Color.White);
Rectangle ImageSize = new Rectangle(0, 0, 490, 196);
graphics.FillRectangle(Brushes.White, ImageSize); }
appearance.Save("F:\\Signature_Appearance.png", ImageFormat.Png);
}
解决方案
问题似乎是您没有指定保存格式,并且图像的默认保存格式PixelFormat.Format32bppArgb
是PNG。路径上的文件扩展名将被忽略。
您需要将最后一行更改为
appearance.Save(@"F:\SignatureAppearance.jpeg", ImageFormat.Jpeg);
实际获得JPEG输出。
此外,您可能没有填写Bitmap
您创建的全部内容,除非您的示例中省略了该代码。为了确保白色背景,您需要用白色填充任何未定义的像素,因为透明像素在 JPEG 编码器中映射为黑色。您上面的代码片段仅显示destination
图像的子区域已定义。您可以通过插入来填充缺失的区域
graphics.Clear(Color.White);
在绘制子矩形之前。
推荐阅读
- android - DisplayAlert 不显示按钮
- python - 尝试找出用户的全球平均评分时出现 KeyError
- javascript - 如何在单个有效负载中创建 Mongoose 一对多关系实体?
- kubernetes - kubernetes make error:touch: _output/bin/prerelease-lifecycle-gen: No such file or directory
- ios - 是否可以在 iOS 上的 WKWebView 中访问相机?
- c++ - 同时处理2条消息
- vue.js - Vue中的CKEditor 4 - 如何防止断字?
- python - 在 Shapely/python 中合并关闭相似的线串
- firebase - 如何在不使用 Flutter 中的 FutureBuilder 或 StreamBuilder 的情况下从 Firebase 获取单个数据
- r - R中的Python f-string等价物?