zy82,83_C#中在滚动窗口中绘图,绘制字体及显示图像
1.窗口的几个属性
Size:包括窗体边框和标题栏
ClientSize:不包括窗体边框和标题栏,工作区域
AutoScrollMinSize:工作区面积小于某一定值后显示滚动条
2.实现在滚动窗口中绘图
public Form1()
{
InitializeComponent();
BackColor = Color.White;
AutoScrollMinSize = new Size(300, 250);
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
label1.Text = this.AutoScrollPosition.X.ToString();
label2.Text = this.AutoScrollPosition.Y.ToString();
g.TranslateTransform(this.AutoScrollPosition.X, this.AutoScrollPosition.Y);
g.FillRectangle(Brushes.LightPink, 0, 0, 200, 150);
g.FillEllipse(Brushes.LightGreen, 0, 150, 300, 100);
}
3.绘制字体
4.绘制字体源代码
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
Font font = new Font("Times New Roman", 24, FontStyle.Bold | FontStyle.Strikeout | FontStyle.Underline, GraphicsUnit.Point);
//Style是只读的,不能被负值font.Style=FontStyle.Bold(x)
g.DrawString("This ia a dog", font, Brushes.Brown, new Point(5, 0));
label1.Text = font.Unit.ToString();
label2.Text = font.Style.ToString();
}
5.将字体读取并显示在窗体中
public Form1()
{
InitializeComponent();
this.BackColor=Color.White;
this.AutoScroll = true;
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
Graphics g = e.Graphics;
g.TranslateTransform(AutoScrollPosition.X, AutoScrollPosition.Y);
Point position = new Point(5, 0);
foreach(FontFamily family in FontFamily.Families)
{
if (family.IsStyleAvailable(FontStyle.Regular))//常规字体
{
Font font = new Font(family.Name, 10);
g.DrawString(family.Name, font, Brushes.Black, position);
position.Y += font.Height + 4;
font.Dispose();
}
}
this.AutoScrollMinSize = new Size(400 - 50, position.Y);
}
6.显示图像
显示矢量图
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Graphics g = this.CreateGraphics();
Image img= Image.FromFile(@"D:\ikun.emf");
Bitmap bmp=new Bitmap(@"D:\ikun.emf");
Metafile metafile = new Metafile(@"D:\ikun.emf");
g.DrawImage(metafile, 0, 0, 300, 300);
g.Dispose();
}
private void button2_Click(object sender, EventArgs e)
{
Graphics g=CreateGraphics();
g.Clear(BackColor);
g.Dispose();
}
原文地址:https://blog.csdn.net/weixin_47149785/article/details/142502281
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!