首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >绘制大小为2X2英寸的矩形-Inches到像素转换

绘制大小为2X2英寸的矩形-Inches到像素转换
EN

Stack Overflow用户
提问于 2015-12-24 09:05:03
回答 1查看 2K关注 0票数 0

我需要画一个矩形,应该是大小在2X2英寸左右,当打印在纸上。

我知道我可以用

代码语言:javascript
复制
 g.DrawRectangle(pen, 100,100, 100, 200);

此应用程序将只在computers.How中使用,我可以正确地将英寸转换为像素,以便在打印时得到所需的尺寸。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-24 10:32:08

默认情况下,要按适当的大小打印图像,需要dpi和像素的正确组合。

让我们看一个例子:

代码语言:javascript
复制
// aiming at 150dpi and 4x6 inches:
float dpi = 150;
float width = 4;
float height = 6;

using (Bitmap bmp = new Bitmap((int)(dpi * width), (int)(dpi * height)))
{
    // first set the resolution
    bmp.SetResolution(dpi, dpi);
    // then create a suitable Graphics object:
    using (Graphics G = Graphics.FromImage(bmp))
    using (Pen pen = new Pen(Color.Orange))
    {
        pen.Alignment = System.Drawing.Drawing2D.PenAlignment.Center;
        G.Clear(Color.FloralWhite);
        // using pixels here:

        Size sz = new System.Drawing.Size((int)dpi * 2 - 1, (int)dpi * 2 - 1);
        G.DrawRectangle(pen, new Rectangle(new Point(0, 0), sz));
        G.DrawRectangle(pen, new Rectangle(new Point(0, 300), sz));
        G.DrawRectangle(pen, new Rectangle(new Point(0, 600), sz));
        G.DrawRectangle(pen, new Rectangle(new Point(300, 0), sz));
        G.DrawRectangle(pen, new Rectangle(new Point(300, 300), sz));
        G.DrawRectangle(pen, new Rectangle(new Point(300, 600), sz));

        // alternative code:
        // we can also set the Graphics object to measure stuff in inches;
        G.PageUnit = GraphicsUnit.Inch;
        // or fractions of it, let's use 10th:
        G.PageScale = 0.1f;
        using (Pen pen2 = new Pen(Color.MediumPurple, 1f / dpi * G.PageScale))
        {
            // draw one rectangle offset by an inch:
            G.DrawRectangle(pen2, 10f, 10f, 20f, 20f);
        }

        bmp.Save(@"D:\xxx.jpg", ImageFormat.Jpeg);
    }
}

注意,当DrawRectangle 透支1像素时,我不得不从绘制的大小中减去1像素!

请注意,我绘制的坐标取决于分辨率!还请注意jpeg格式是如何创建许多模糊颜色的。Png会产生更清晰的结果,特别是当你打印文本时。

还请注意我是如何在替代代码中缩小PenWidth的!

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34450083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档