C#中intptr可以是GDI对象吗

定义了一个方法:[DllImport("user32.dll",EntryPoint="AnimateWindow")]privatestaticexternboolAn... 定义了一个方法:
[DllImport("user32.dll", EntryPoint = "AnimateWindow")]
private static extern bool AnimateWindow(IntPtr handle, int ms, int flags);
然后在窗体启动的方法里面让窗体自上向下显示。

private void Form1_Load(object sender, EventArgs e)
{

AnimateWindow(this.Handle, 1000, 0x60004); // 自上向下。
}
这样效果是好的,窗体启动是自上向下启动的效果。可是现在我想要的是使用GDI在窗体上绘制一个圆形,代码是这么写的
Graphics a = this.CreateGraphics();
Pen yellow = new Pen (Color.Yellow);
a.DrawEllipse(yellow,50,50,50,50);
我想达到的效果是绘制圆形也是自上向下绘制,该怎么实现呢?
求大神啊。。纠结好久了
展开
 我来答
半颠儿
2014-07-23
知道答主
回答量:10
采纳率:0%
帮助的人:3.8万
展开全部
传说Flash中有一种遮罩效果,你可以仿照着做
方法1:
步骤:
1,画一个完整的圆(在绘图平面A上绘制)
2,在A上放置一个绝对(相对绘图平面A)布局的面板B,初始化时完全遮盖A
3,定时器控制,逐渐移动B使A上的圆慢慢的显示出来
4,至于窗体是至上向下启动,对上述效果有什么影响,没实际测试,不清楚。理论上是没影响的
方法2:
大致同方法1
1,画一个完整的圆
2,在圆上画一个矩形(与控制的背景色同),初始的时候完全覆盖上面画的圆
3,定时器,改变绘制矩形的Y坐标,高度,重绘,模拟圆动态自上向下的绘制
方法3:
貌似GDI也有绘制圆弧的API吧,定时器控制不停的擦除重新绘制圆弧(改变圆弧的绘制角度)也是可以的

采用脏矩形局部刷新或启用控件双缓冲或图片双缓冲避免闪烁,具体的看实际情况了

“C#中intptr可以是GDI对象吗”:GDI使用的绘图平面其实就是某个可视化控件或窗体,你的问题是肯定的,你可以试试,具体看AnimateWindow是否支持了(没有试过,没发言权)

N 多年不使用GDI,GDI+,罕有人用了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式