![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
GDI
文章平均质量分 63
GDI绘制图形
luckyone906
这个作者很懒,什么都没留下…
展开
-
C# 中GDI绘制后不显示问题原因分析与解决,与控件重绘相关的方法区别
系统会在多个不同的时机发送WM_PAINT消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由 系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;系统会在多个不同的时机发送WM_PAINT消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由 系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;即在其显示之前画什么都是无用的。原创 2024-07-06 22:39:10 · 593 阅读 · 0 评论 -
Windows 消息ID及定义大全
表A-1 Windows消息分布 消息范围 说 明 0 ~WM_USER– 1 系统消息 WM_USER~ 0x7FFF 自定义窗口类整数消息 WM_APP~ 0xBFFF 应用程序自定义消息 0xC000 ~ 0xFFFF 应用程序字符串消息 > 0xFFFF ...原创 2021-05-14 21:38:29 · 4602 阅读 · 0 评论 -
WM_Paint 消息疑问解析
1. 系统何时发送WM_PAINT消息? 系统会在多个不同的时机发送 WM_PAINT 消息:当第一次创建一个窗口时,当改变窗口的大小时,当把窗口从另一个窗口背后移出时,当最大化或最小化窗口时,等等,这些动作都是由 系统管理的,应用只是被动地接收该消息,在消息处理函数中进行绘制操作;大多数的时候应用也需要能够主动引发窗口中的绘制操作,比如当窗口显示的数据改变 的时候,这一般是通过 InvalidateRect 和 InvalidateRgn 函数来完成的。 InvalidateR...原创 2021-05-14 21:32:31 · 222 阅读 · 0 评论 -
c#中控件重绘(放大缩小移动隐藏恢复后不消失)实例
//很重要,一定要重写并在在OnPaint()中用传入的pevent.Graphics重绘,并且屏蔽掉父类的OnPaint方法,这样重绘后的图形不论控件怎么操作都不会消失了using System;using System.Collections.Generic;using System.Drawing;using System.Drawing.Drawing2D;using System.Linq;using System.Text;using System.Threading.Tasks.原创 2021-05-14 21:31:04 · 1251 阅读 · 0 评论 -
C#中GDI绘制高质量平滑图形实例
protected override void OnPaint(PaintEventArgs e){try{Graphics g = e.Graphics;//获取绘制对象///设置参数g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; //图片柔顺...原创 2021-05-14 21:26:01 · 1260 阅读 · 0 评论 -
C#中创建圆形/按钮(使用重绘)
创建圆形按钮挺简单的。 public class EllipseButton : Button { protected override void OnPaint(PaintEventArgs pevent) { GraphicsPath gPath = new GraphicsPath(); // 绘制椭圆形区域 gPath.AddEllipse(0, 0, this.ClientSize.Width, this.ClientSi.原创 2021-05-13 21:42:40 · 1690 阅读 · 1 评论 -
Winform中提提升重绘效率-背景的设置
backgrounglayout属性设置为none,否则会影响重绘效率。原创 2021-03-29 21:30:56 · 314 阅读 · 0 评论 -
c#winform控件过多卡顿问题解决方案
近期在项目中遇到了登录以及切换界面时,界面不停闪烁的问题,经过查阅发现以下方法可以成功解决该问题。将下面代码添加到窗体代码中即可: protected override CreateParams CreateParams //防止界面闪烁 { get { CreateParams paras = base.CreateParams; paras.ExStyle |= 0x02000000; return paras; .原创 2021-02-09 22:44:12 · 14043 阅读 · 4 评论 -
C#中改变进度条(progressbar)的颜色
改变系统自带进度条的方法就是重绘了。具体方法如下:1. 自定义控件继承自ProgressBar,如下:publicclassCustomProgressBar:ProgressBar{publicCustomProgressBar(){base.SetStyle(ControlStyles.UserPaint,true);//...}...原创 2021-02-04 20:00:07 · 3324 阅读 · 0 评论 -
C#完美实现透明窗体的绘制效果
为了实现透明窗体的绘制,最开始是采用了双层窗体的模式。思路:将form1的属性transparencyKey设置为背景色,将form2的opicaty设置的很低,比如0.05,保证鼠标不会穿透!让后将使用form1创建的绘制对象(form1.CreateGraphics),去绘制即可!后面方面使用单层窗体也可实现透明绘制,主要是设置窗体背景色需要注意!在设置背景色的后,颜色的R值不能等于B值,这样就可事件即透明又不会鼠标穿透的效果!例如这样设置:this.BackColor = Color.原创 2020-06-14 20:25:24 · 1511 阅读 · 0 评论 -
c#获取控件指定坐标的像素值
[DllImport("gdi32.dll")] private static extern uint GetPixel(IntPtr hDC, int XPos, int YPos); Graphics g = control.CreateGraphics(); uint colorref = GetPixel(g.GetHdc(), center.X + convolution[i, j].X, center.Y + convolution.原创 2020-06-14 20:22:15 · 1456 阅读 · 0 评论 -
C# 中Bitmap图像处理含增强对比度的三种方法
Bitmap类Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义的图像的对象.该类的主要方法和属性如下:1. GetPixel方法和SetPixel方法:获取和设置一个图像的指定像素的颜色.2. PixelFormat属性:返回图像的像素格式.3. Palette属性:获取和设置图像所使用的颜色调色板.4. Height Width属性:返回图像的高度和宽度.5. LockBits方法和UnlockBits方法:分别锁原创 2020-06-14 20:18:30 · 1187 阅读 · 0 评论 -
c#中实现图像图像卷积与滤波-高斯平滑
使用C#语言编写高斯平滑。一、线性滤波与卷积的基本概念2D卷积需要4个嵌套循环4-double loop,所以它并不快,除非我们使用很小的卷积核。这里一般使用3×3或者5×5。而且,对于滤波器,也有一定的规则要求:1)滤波器的大小应该是奇数,这样它才有一个中心,例如3×3,5×5或者7×7。有中心了,也有了半径的称呼,例如5×5大小的核的半径就是2。2)滤波器矩阵所有的元素之和应该要等于1,这是为了保证滤波前后图像的亮度保持不变。当然了,这不是硬性要求了。3)如果滤波器矩阵所有元素之和大于原创 2020-06-14 20:16:28 · 1914 阅读 · 0 评论 -
c# gdi设置画刷透明
使用solidBrush新建画刷,定义画刷的颜色为透明色Brush b = new SolidBrush(Color.FromArgb(50, Color.Green));这里的50是透明度的设置,范围从0-255;0:无颜色 255:不透明原创 2020-06-14 20:15:05 · 607 阅读 · 0 评论 -
c#使用System.Windows.Forms.DataVisualization.Charting.dll绘制图表实例
首先下载System.Windows.Forms.DataVisualization.Charting.dll,然后引用到项目中手动在代码中创建chart类型并将其添加到某个控件中(control.controls.add(chart)),然后参数初始化添加样式和数据就可以了。以下是效果图和代码using System;using System.Collections.Ge...原创 2020-03-16 21:03:42 · 11945 阅读 · 0 评论 -
c#中chart绘制曲线,柱状图等
通常我们需要在界面中绘制波形图,柱状图,折线图等等。此时用到Chart控件是非常方便的。先以图一条样条曲线(Spline)为例(1)在Visual Studio中新建一个“Windows窗体应用程序”(2)在Form1上布置一个Chart控件。默认地,Chart控件显示的是直方图(3)Form1的窗体代码Form1.cs 1 2 3 4...原创 2020-03-16 20:35:20 · 9530 阅读 · 0 评论 -
C#工作线程创建窗体及绘制星图实例
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ...原创 2020-01-12 14:35:19 · 446 阅读 · 0 评论 -
c#绘制星图靶标实例
public partial class Form2 : Form { public Form2() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { ...原创 2020-01-11 21:57:20 · 522 阅读 · 0 评论