C# winform panel 画笔初始化问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# winform panel 画笔初始化问题相关的知识,希望对你有一定的参考价值。
如何在窗体初始化的时候就能加载panel 中的画笔进行画图,不要通过paint.
下面的是我的代码,这样加载完不能画出图。希望大神帮忙看下,谢谢了
public Form1()
InitializeComponent();
this.dataGridView1.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.Controls.Add(MainPanel);
init();
private void button7_Click(object sender, EventArgs e)
init();
private void init()
Graphics gra = this.MainPanel.CreateGraphics();
Pen myPen = Pens.Black;
int x, y;
for (int i = 1; i < 33; i++)
for (int j = 1; j < 15; j++)
x = i * 50;
y = j * 50;
gra.DrawRectangle(myPen, new Rectangle(x, y, 40, 35));
if (j % 2 == 1)
gra.FillRectangle(Brushes.LightBlue, new Rectangle(x, y, 40, 35));
else
gra.FillRectangle(Brushes.LightPink, new Rectangle(x, y, 40, 35));
c# GDI和winforms中的径向渐变画笔效果
【中文标题】c# GDI和winforms中的径向渐变画笔效果【英文标题】:c# radial gradient brush effect in GDI and winforms 【发布时间】:2011-03-31 23:52:46 【问题描述】:我创建了一个 c# windows 应用程序并编写了 75% 的代码。该程序允许用户创建流程图,并根据其状态对流程图形状进行着色。我希望它们变成 3d 按钮,例如来自网站 Webdesign.org 的
我不想为每个按钮创建一个 PNG,而是想在 C# 中使用画笔或其他技术创建它们,例如:
// Create solid brush.
SolidBrush blueBrush = new SolidBrush(Color.Blue);
// Create points that define polygon.
PointF point1 = new PointF(50.0F, 50.0F);
PointF point2 = new PointF(100.0F, 25.0F);
PointF point3 = new PointF(200.0F, 5.0F);
PointF point4 = new PointF(250.0F, 50.0F);
PointF point5 = new PointF(300.0F, 100.0F);
PointF point6 = new PointF(350.0F, 200.0F);
PointF point7 = new PointF(250.0F, 250.0F);
PointF[] curvePoints = point1, point2, point3, point4, point5, point6, point7;
// Define fill mode.
FillMode newFillMode = FillMode.Winding;
// Fill polygon to screen.
e.Graphics.FillPolygon(blueBrush, curvePoints, newFillMode);
我知道 WPF 有径向渐变,但我可以在 CGI 中做一些类似的事情吗?
【问题讨论】:
我假设您的意思是“GDI+”而不是“CGI”? 【参考方案1】:与WPF 不同,GDI+/WinForms 没有RadialGradientBrush
。但是,您可以使用PathGradientBrush
实现相同的效果。
这是一个例子:
Rectangle bounds = ...;
using (var ellipsePath = new GraphicsPath())
ellipsePath.AddEllipse(bounds);
using (var brush = new PathGradientBrush(ellipsePath))
brush.CenterPoint = new PointF(bounds.Width/2f, bounds.Height/2f);
brush.CenterColor = Color.White;
brush.SurroundColors = new[] Color.Red ;
brush.FocusScales = new PointF(0, 0);
e.Graphics.FillRectangle(brush, bounds);
PathGradientBrush
有很多属性可供试验,以确保获得所需的效果。
【讨论】:
虽然有很大的不同。 WF 的PathGradientBrush
不会在路径外绘制。 WPF 的RadialGradientBrush
可以。因此,根据您的要求,到目前为止可能无法达到相同的效果。【参考方案2】:
看看这个Codeproject article,然后看看路径渐变。
【讨论】:
谢谢,我会试试这个以上是关于C# winform panel 画笔初始化问题的主要内容,如果未能解决你的问题,请参考以下文章
winform 窗体加载的问题,C#里不同Panel中窗体的调用
winform 窗体加载的问题,C#里不同Panel中窗体的调用
C#的winform. 有自动隐藏的控件吗?鼠标移过去再展开的
c#:winform的panel控件,我设计时把panel2覆盖在panel1。触发后可显示panel1,但触发panel2时没法显示?