我有这个代码
var image = Image.FromFile(sPngFile, true);
Run Code Online (Sandbox Code Playgroud)
我的目标是打开一个 png 文件的处理程序,正如我所写的,我获得了一个图像,我想将其实时转换为一个图标
我知道通过这种方式我可以从 png 创建 ico 文件;有趣,但我想这不是我需要的
var image = Image.FromFile(sPngFile, true);
ImageButtonGraphic.Save(sIcoFile, System.Drawing.Imaging.ImageFormat.Icon);
Run Code Online (Sandbox Code Playgroud)
建议?先感谢您
我正在尝试使用 iTextSharp 将图像写入 PDF,但除了写入的图像之外,我还需要向 PDF 添加文本。似乎最好的方法是将文本写为图像并将其插入到页面上。一切都很好,但是当我查看文本时,我发现它的质量比我想要的要低。我最终得到这样的东西:
您可以看到有很多与周围的纯色背景不同的“点”。这是我用来绘制文本的代码:
private System.Drawing.Image DrawText(String text, System.Drawing.Font font, Color textColor, Color backColor)
{
Bitmap img = new Bitmap(1, 1);
Graphics drawing = Graphics.FromImage(img);
SizeF textSize = drawing.MeasureString(text, font);
img.Dispose();
drawing.Dispose();
img = new Bitmap((int) textSize.Width, (int) textSize.Height);
//img.SetResolution(200, 200);
drawing = Graphics.FromImage(img);
drawing.Clear(backColor);
Brush textBrush = new SolidBrush(textColor);
drawing.DrawString(text, font, textBrush, 0, 0);
//drawing.TextRenderingHint = TextRenderingHint.AntiAlias;
//drawing.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
//drawing.SmoothingMode = SmoothingMode.HighQuality;
//img.MakeTransparent(Color.MediumAquamarine);
drawing.Save();
textBrush.Dispose();
drawing.Dispose();
return img;
}
Run Code Online (Sandbox Code Playgroud)
以及 PDF 编写器的相关文本:
var name = …Run Code Online (Sandbox Code Playgroud) 我有一个应用程序,允许用户定义图像的区域并将该区域保存到文件.我遇到了一个我无法解决的障碍.我创建的用于绘制所选区域的位图卡在"MemoryBmp"的ImageFormat中,看起来这是为任何非文件加载的位图设置的ImageFormat.问题是我的Bitmap是在内存中创建的,我想将它保存为CCITT4双色调TIFF但是我得到了"GDI +中发生了一般错误"的异常.我非常有信心这是因为Image.RawFormat属性是可怕的MemoryBmp.
Image.Save()有一个带有ImageFormat参数的重载,当我使用它传递ImageFormat.Tiff它保存得很好,但我没有机会指定我的编码器参数.
我能想到的唯一可能的解决方法是使用Image.Save(Image,ImageFormat)保存到磁盘然后重新加载它(RawFormat现在将正确设置为ImageFormat.Tif)然后再次保存通过编码器设置.这只是愚蠢,必须有更好的方法.
这里有一段代码(这只是测试内容),如果我之前的描述不够清楚,应该让你知道我在做什么:
SizeF dpiScale = GetScreenToImageDPIRatio(loadedImage);
using (Bitmap image = new Bitmap(loadedImage,
(int)(_cropBox.Width * dpiScale.Width),
(int)(_cropBox.Height * dpiScale.Height)))
{
image.SetResolution(loadedImage.HorizontalResolution,
loadedImage.VerticalResolution);
using (Graphics g = Graphics.FromImage(image))
{
g.DrawImage(loadedImage, 0, 0, new Rectangle(
(int)(_cropBox.Location.X * dpiScale.Width),
(int)(_cropBox.Location.Y * dpiScale.Height),
(int)(_cropBox.Width * dpiScale.Width),
(int)(_cropBox.Height * dpiScale.Height)),
GraphicsUnit.Pixel);
}
// It's stuck as a MemoryBmp so none of these checks will work
if (true || image.RawFormat.Equals(ImageFormat.Tiff))
{
ImageCodecInfo tiffCodecInfo = ImageUtils.GetEncoderInfo("image/tiff");
EncoderParameters myEncoderParameters = new EncoderParameters(2);
myEncoderParameters.Param[0] = new
EncoderParameter(System.Drawing.Imaging.Encoder.Compression, …Run Code Online (Sandbox Code Playgroud) 我使用C#和asp.net 4.
如何转换和等效RGB颜色的十六进制颜色?
Example: FF0000 to 255,0,0.
Run Code Online (Sandbox Code Playgroud)
我的目标是将此颜色传递给方法FromArgb命名空间System.Drawing
FromArgb Method (Int32, Int32, Int32) (Alpha is implicit as opaque)
Run Code Online (Sandbox Code Playgroud)
目前我使用此代码清除和图像并应用不透明的平面颜色:
System.Drawing.Graphics.Clear(System.Drawing.Color.Red));
Run Code Online (Sandbox Code Playgroud)
这适用于预定义的颜色,如"红色","黑色"等,但不明显具有自定义更精确的颜色.
有任何想法吗?谢谢你的帮助!
资源:
http://msdn.microsoft.com/en-us/library/cce5h557.aspx
http://msdn.microsoft.com/en-us/library/system.drawing.color.aspx
我正在尝试使用FillPath覆盖我自己的自定义控件中的标签的OnPaint方法.
这是我的控件代码:
public partial class GlassLabel : Label
{
public GlassLabel()
{
InitializeComponent();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = this.CreateGraphics();
GraphicsPath path = new GraphicsPath();
SolidBrush br = new SolidBrush(Color.Black);
path.AddString("LLOOOOLL", new FontFamily("Microsoft Sans Serif"), (int)FontStyle.Regular, 12, new Point(55, 55), StringFormat.GenericDefault);
g.SmoothingMode = SmoothingMode.HighQuality;
g.FillPath(br, path);
}
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,标签的文本是相同的,它不会使用FillPath绘制.
我试图覆盖标签的原因是我想在Aero玻璃上使用它,这需要FillPath.如果我可以将图形(FillPath)转换为对象以便我可以将事件附加到它,我也想了解相关信息.
谢谢.
刚试过:
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
e.Graphics.FillPath(br, path);
Run Code Online (Sandbox Code Playgroud)
没工作.
我是C#和.net的新手,只是想弄清楚如何做一些我认为相对简单的事情.我正在创建一个位图,稍后将其保存为磁盘图像,其中一部分我要绘制一个矩形形状.我可以做到这一点,但我正在寻找一种简单的方法来实现这个角度.我需要能够指定一个角度来绘制矩形,我还需要能够指定旋转点(我需要围绕矩形的左上角旋转).
这通常是用c#/.net实现的,有没有内置的东西,我还没有找到这种东西?
我正在使用内置的Font对话框来选择字体大小和样式.字体大小范围显示为8到72.我需要限制用户不要选择超过20的大小.是否可以禁用22的字体大小或不显示22的字体大小?我没有在Font类上看到任何属性来执行此操作?谢谢你的任何建议.
我正在尝试使用iTextSharp压缩PDF.有很多页面将彩色图像存储为JPEG(DCTDECODE)...所以我将它们转换为黑白PNG并在文档中替换它们(PNG比JPG的黑白格式小得多)
我有以下方法:
private static bool TryCompressPdfImages(PdfReader reader)
{
try
{
int n = reader.XrefSize;
for (int i = 0; i < n; i++)
{
PdfObject obj = reader.GetPdfObject(i);
if (obj == null || !obj.IsStream())
{
continue;
}
var dict = (PdfDictionary)PdfReader.GetPdfObject(obj);
var subType = (PdfName)PdfReader.GetPdfObject(dict.Get(PdfName.SUBTYPE));
if (!PdfName.IMAGE.Equals(subType))
{
continue;
}
var stream = (PRStream)obj;
try
{
var image = new PdfImageObject(stream);
Image img = image.GetDrawingImage();
if (img == null) continue;
using (img)
{
int width = img.Width;
int height = …Run Code Online (Sandbox Code Playgroud) 最近,我下载了mono.我不能用:
using System.Drawing
Run Code Online (Sandbox Code Playgroud)
它只是给我一个错误.我需要下载任何其他软件包,还是只是一个bug?去加载项管理器,我已经安装了所有软件包.
这是我从错误列表中得到的:
错误CS0234:类型或命名空间名称
Drawing' does not exist in the namespaceSystem'.你缺少`System.Drawing'程序集参考吗?(CS0234)
我正在尝试使用(x,y)坐标,宽度和高度裁剪jpeg文件,并将输出保存在同一位置(即替换).我尝试了下面的代码,但它不起作用.
public void CropImage(int x, int y, int width, int height)
{
string image_path = @"C:\Users\Admin\Desktop\test.jpg";
var img = Image.FromFile(image_path);
Rectangle crop = new Rectangle(x, y, width, height);
Bitmap bmp = new Bitmap(crop.Width, crop.Height);
using (var gr = Graphics.FromImage(bmp))
{
gr.DrawImage(img, new Rectangle(0, 0, bmp.Width, bmp.Height), crop, GraphicsUnit.Pixel);
}
if (System.IO.File.Exists(image_path))
{
System.IO.File.Delete(image_path);
}
bmp.Save(image_path, ImageFormat.Jpeg);
}
Run Code Online (Sandbox Code Playgroud)
这给出了如下错误:
mscorlib.dll中出现"System.IO.IOException"类型的异常,但未在用户代码中处理
附加信息:进程无法访问文件'C:\ Users\Admin\Desktop\test.jpg',因为它正由另一个进程使用.
当我添加时,img.Dispose()我没有得到上述错误,我可以保存它.但它保存具有给定宽度和高度的空白图像.
任何人都可以帮我解决这个问题吗?
system.drawing ×10
c# ×8
.net ×4
image ×2
pdf ×2
asp.net ×1
asp.net-mvc ×1
colors ×1
crop ×1
gdi+ ×1
hex ×1
icons ×1
itext ×1
itextsharp ×1
label ×1
monodevelop ×1
vb.net ×1