自学内容网 自学内容网

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)!