zoukankan      html  css  js  c++  java
  • 解决C# WinForm Graphics绘制闪烁问题

    不直接使用form的CreateGraphics创建Graphics进行绘制,可以先在Form上面放一个需要大小的PictureBox,再创建一个同大小的Bitmap,将这个Bitmap设置为PictureBox的Image。再在这个Bitmap上进行绘制,这样拖动resize之类就不会闪烁了。

    代码片段:

    PictureBox ImageBox = null;
    Bitmap RenderTarget = null;
    
    Size RenderSize = new Size();
    public RenderForm()
            {
                InitializeComponent();
    
                ImageBox = new PictureBox();
                ImageBox.Size = Properties.Resources.background.Size;
                ImageBox.Parent = this;
    
                renderSize = new Size(StatTools.Properties.Resources.background.Width, StatTools.Properties.Resources.background.Height);
            }
    
    
    public Size renderSize
            {
                get { return RenderSize; }
                set
                {
                    if(RenderTarget == null || RenderTarget.Width != value.Width || RenderTarget.Height != value.Height)
                    {
                        RenderTarget = null;
                        RenderTarget = new Bitmap(value.Width, value.Height);
    
                        ImageBox.Size = new Size(value.Width, value.Height);
                        ImageBox.Image = RenderTarget;
                    }
    
                    RenderSize = value;
                }
            }
    
    private void RenderForm_Paint(object sender, PaintEventArgs e)
            {
                if( CurrentRender != null )
                {
                    var GFX = Graphics.FromImage(RenderTarget);
                    CurrentRender.OnDraw(GFX, renderSize.Width, renderSize.Height);
                }
            }
  • 相关阅读:
    python机器学习基础教程-鸢尾花分类
    LaTeX实战经验:如何写算法
    Latex公式最好的资料
    BibTex (.bib) 文件的注释
    Latex中参考文献排序
    LATEX双栏最后一页如何平衡两栏内容
    Latex强制图片位置
    Endnote输出Bibtex格式
    redis学习
    20180717
  • 原文地址:https://www.cnblogs.com/bodong/p/6058443.html
Copyright © 2011-2022 走看看