Я реализую рисунок на элементе управления в C #, используя класс Graphics.Мне нужно реализовать функцию масштабирования, но я заметил странное поведение для пунктирных линий.Когда я увеличиваю их, пробелы между штрихами меняются, даже если ширина пера не меняется.
Я добавляю пример кода, чтобы нарисовать горизонтальную пунктирную линию в середине PictureBox, изменяя уровень масштабирования, нажимая button1 или button2,Ручка инициализируется, как показано ниже:
Pen pen = new Pen(Color.Aqua, 8f);
pen.DashStyle = System.Drawing.Drawing2D.DashStyle.DashDot;
Изменение уровня масштабирования:
private void button1_Click(object sender, EventArgs e)
{
scale *= 2f;
pictureBox1.Refresh();
}
private void button2_Click(object sender, EventArgs e)
{
scale /= 2f;
pictureBox1.Refresh();
}
Обновление PictureBox:
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
e.Graphics.ScaleTransform(scale, scale);
pen.ScaleTransform(scale, scale);
e.Graphics.FillRectangle(Brushes.Black, new RectangleF(0, 0, this.pictureBox1.Width/scale, this.pictureBox1.Height/scale));
e.Graphics.DrawLine(pen, 0, this.pictureBox1.Height / (2 * scale), this.pictureBox1.Width / scale, this.pictureBox1.Height / (2 * scale));
}
Перо преобразуется для сохранения постоянной ширины для различного увеличенияуровни, но пробелы между штрихами все еще меняются.
Есть ли способ сохранить их постоянными независимо от увеличения?