首页 > 其他分享 >【代码块】-控件-双缓冲绘制

【代码块】-控件-双缓冲绘制

时间:2023-08-08 23:12:10浏览次数:120  
标签:控件 using 缓冲 Image private Graphics new 绘制 Rectangle

整理代码块

代码块整理后存储,供后期使用

using System;
using System.Drawing;
using System.Windows.Forms;

/*
这段代码是用于自定义控件绘图的示例,你可以根据自己的需求进行修改和扩展
*/
public class CustomControl : Control
{
    private bool IsMouseOn = false;
    private bool IsSelect = false;
    private Pen rectanglePen = new Pen(Color.Black, 2);
    private Brush fillBrush = new SolidBrush(Color.LightGray);
    private Rectangle rectangleRec = new Rectangle(10, 10, 100, 100);
    private Image Image;
    private Rectangle imageRec = new Rectangle(20, 20, 80, 80);
    private string Showtext = "Hello, World!";
    private Font Font = new Font("Arial", 12);
    private Brush textBrush = new SolidBrush(Color.Black);
    private PointF textPointF = new PointF(30, 120);

    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        this.NewPaint(e);
    }

    private void NewPaint(PaintEventArgs e)
    {
        using (BufferedGraphics Buf = GraphicsManager.Current.Allocate(e.Graphics, e.ClipRectangle))
        {
            Graphics g = Buf.Graphics;
            g.Clear(this.BackColor);

            if (this.IsMouseOn || this.IsSelect)
            {
                g.DrawRectangle(rectanglePen, rectangleRec);
                g.FillRectangle(fillBrush, rectangleRec);
            }

            if (this.Image != null)
            {
                g.DrawImage(Image, imageRec);
            }

            g.DrawString(this.Showtext, this.Font, textBrush, textPointF);

            Buf.Render(e.Graphics);
        }
    }
}

标签:控件,using,缓冲,Image,private,Graphics,new,绘制,Rectangle
From: https://www.cnblogs.com/Katakana/p/17615653.html

相关文章

  • 【代码块】-CS-控件属性和时间
    整理代码块代码块整理后存储,供后期使用//winForm,根据控件的名字获取控件Controlcontrol=Controls.Find("button1",true)[0];//获取属性objecto=control.GetType().GetProperty("PropertyName").GetValue(control,null);//获取事件System.Reflection.EventInfo......
  • 皮肤控件IrisSkin4.dll调用样例
    最近做一些C#数据库开发项目,基本窗体程序做好之后,发现界面较为丑陋,然而,自己又不善于美工,所以想到了求助于第三方帮忙。网上有较多的是利用IrisSkin2.dll文件来开发,然后,本人按照一些解决方案做下来,发现该链接库并不会适合VS2010平台开发的Winform,故此,寻找替代方案,然后,发现了IrisSki......
  • 自定义类给窗体的控件赋值
    前面我们有说到 多线程给窗体的控件赋值 详见遇到问题-UI界面无响应,多线程解决UI界面无响应问题现在有一种新的情况,我想在另一个类中给窗体的控件赋值(这在记录程序执行进度的时候常用到),我们仍可以用委托 首先在自定义类的外面 声明一个委托模块 publicdelegate......
  • c#操作excel方式四-Aspose控件
     参考资料: 这位大大写得不错,还有复杂报表的生成,有兴趣的可以看看这里还有一篇Aspose基础知识的方法1:读取excel内容到datableDataTable_dt_Data;初始化表的列privatevoidinitDataTable(){_dt_Data=newDataTable();_dt_Data.Columns......
  • C# 读取带CheckBox复选框控件的表格-并集成到Windows Service里面
    最近的项目要求读取xls文件内的单元格,并且单元格旁边会有复选框标识类型。搜了下只有java的POI有例子,NOPI看项目文档好像是没有实现读取控件的功能。java实现POI POI如何解析出excel中复选框是否被选中https://blog.csdn.net/qq_29832217/article/details/104413475 C#导......
  • 基于Qt编写超精美自定义控件
    一、前言无论是哪一门开发框架,如果涉及到UI这块,肯定需要用到自定义控件,越复杂功能越多的项目,自定义控件的数量就越多,最开始的时候可能每个自定义控件都针对特定的应用场景,甚至里面带了特定的场景的一些设置和处理,随着项目数量的增多,有些控件又专门提取出来共性,做成了通用的自定义控......
  • DELPHI应用EXCEL(4) 使用TOLEContainer控件
    严格的来说,tolecontainer控件并不是一个EXCEL控件,而是一个所有OLE文件的控件,可以用它打开PDF、OFFICE、TXT文件等等。而且使用OLECONTAINER控件打开的文件,文件内容依旧是一个VARIANT类型的数据。OLECONTAINER控件在SYSTEM组下。 使用OLECONTAINER控件需要注意以下几点:1、一......
  • Word控件Spire.Doc 转换教程(一):在 C#、VB.NET 中将 Word Doc 转换为 XML
    谈到OfficeOpenXML,我们可能会想到HTML。实际上,OfficeOpenXML与HTML类似,都是基于标签的语言。OfficeOpenXML和HTML之间的区别在于OfficeOpenXML使用的标记不是预定义的。如果我们在OfficeOpenXML中创建自己的标签,我们需要遵循一些规则。首先,OfficeOpenXML文档中......
  • Android View绘制原理 - RenderThread
    前面的文章介绍了HardwareRendere在初始化的时候,涉及到了一个组件RenderThread并简要的分析了一下,这篇文章将继续深入的分析一下这个RenderThread,介绍一下它的几个重要特性和功能1ThreadRenderThread首先是继承自ThreadBase,是一个真实的线程。frameworks/base/libs/hwui/rendert......
  • 盘点下4个Winform UI开源控件库
    今天一起来盘点下4个WinformUI开源控件库,有.NetFramework,也有.NetCore。 1、支持.Net7的开源UI组件框架项目简介这是一个基于.NetFramework、.Net6+开发的,WinForm开源UI框架,框架包含常用的控件库、工具类库、扩展类库、单窗口库、多窗口库。默认风格是模仿Element的主......