标签: system.drawing

如何在 C# 中将 System.Drawing.Image 转换为 System.Drawing.Icon?

我有这个代码

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)

建议?先感谢您

.net c# icons system.drawing image

3
推荐指数
1
解决办法
9213
查看次数

使用 System.Drawing 绘制文本时出现低分辨率图像

我正在尝试使用 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)

c# pdf asp.net-mvc system.drawing itext

3
推荐指数
1
解决办法
3100
查看次数

使用EncoderParams将MemoryBmp上的Image.Save()转换为TIFF - 如何?

我有一个应用程序,允许用户定义图像的区域并将该区域保存到文件.我遇到了一个我无法解决的障碍.我创建的用于绘制所选区域的位图卡在"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# system.drawing gdi+ system.drawing.imaging

2
推荐指数
1
解决办法
6273
查看次数

如何将十六进制颜色转换为RGB颜色(24位)

我使用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

c# asp.net hex system.drawing colors

2
推荐指数
1
解决办法
1万
查看次数

覆盖标签OnPaint?

我正在尝试使用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# label system.drawing custom-controls

2
推荐指数
1
解决办法
8022
查看次数

绘制旋转的矩形

我是C#和.net的新手,只是想弄清楚如何做一些我认为相对简单的事情.我正在创建一个位图,稍后将其保存为磁盘图像,其中一部分我要绘制一个矩形形状.我可以做到这一点,但我正在寻找一种简单的方法来实现这个角度.我需要能够指定一个角度来绘制矩形,我还需要能够指定旋转点(我需要围绕矩形的左上角旋转).

这通常是用c#/.net实现的,有没有内置的东西,我还没有找到这种东西?

.net c# system.drawing

2
推荐指数
1
解决办法
1万
查看次数

使用System.Drawing.Font限制字体大小?

我正在使用内置的Font对话框来选择字体大小和样式.字体大小范围显示为8到72.我需要限制用户不要选择超过20的大小.是否可以禁用22的字体大小或不显示22的字体大小?我没有在Font类上看到任何属性来执行此操作?谢谢你的任何建议.

.net c# vb.net system.drawing

2
推荐指数
1
解决办法
344
查看次数

PDF转换为黑白PNG

我正在尝试使用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)

.net pdf system.drawing itextsharp

2
推荐指数
1
解决办法
2265
查看次数

monodevelop system.drawing无法找到

最近,我下载了mono.我不能用:

using System.Drawing
Run Code Online (Sandbox Code Playgroud)

它只是给我一个错误.我需要下载任何其他软件包,还是只是一个bug?去加载项管理器,我已经安装了所有软件包.

这是我从错误列表中得到的:

错误CS0234:类型或命名空间名称Drawing' does not exist in the namespaceSystem'.你缺少`System.Drawing'程序集参考吗?(CS0234)

system.drawing monodevelop

2
推荐指数
1
解决办法
2942
查看次数

如何在c#中裁剪和保存jpeg图像文件

我正在尝试使用(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()我没有得到上述错误,我可以保存它.但它保存具有给定宽度和高度的空白图像.

任何人都可以帮我解决这个问题吗?

c# system.drawing image crop

2
推荐指数
1
解决办法
7554
查看次数