我正在尝试将很多矩形装入Bitmap,它将显示在图片框中。在我的实际代码中,我计算出一个矩形的总宽度和高度,它可以包含所有它们,然后我将它除以Bitmap的大小,以获得我的缩放因子。问题是我无法弄清楚如何执行缩放。下面的代码是我需要做的简单版本。
请记住,我不能依赖于图片框的缩放功能(拉伸),我不想简单地将比例应用于所有矩形的宽度和高度,因为在我的真实代码中它不会工作得很好。我需要一种方法在Graphics中缩小它。重要的是Bitmap保持与它相同的大小(300 X 300)。谢谢。下面的代码是我到目前为止所得到的,但没有任何变化。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Windows.Forms;
namespace WindowsFormsApplication22
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Bitmap BM = new System.Drawing.Bitmap(300, 300);
Pen PenTest = new System.Drawing.Pen(Brushes.Red);
private void Form1_Load(object sender, EventArgs e)
{
using (Graphics GR = Graphics.FromImage(BM))
{
GR.DrawRectangle(PenTest, new Rectangle(0,0,500,500));
// I need a scale of 0.60 in this example, because 300/500 = .6
GR.ScaleTransform(.6F, .6F);//Doesn't Work. No Change at all in the size of the rectangle.
}
pictureBox1.Image = BM;
}
}
}
答案 0 :(得分:3)
Graphics.ScaleTransform执行转换但不会绘制任何内容。
在对图形对象执行变换后,您需要绘制一个矩形:
using (Graphics GR = Graphics.FromImage(BM))
{
// ....
GR.ScaleTransform(.6F, .6F);
GR.DrawRectangle(PenTest, new Rectangle(0,0,500,500));
}