游戏开发论坛

 找回密码
 立即注册
搜索
查看: 3677|回复: 4

OnPaint和Timer共用的问题

[复制链接]

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
发表于 2006-11-3 11:41:00 | 显示全部楼层 |阅读模式
我的目的就是想让Timer1启动期间画verts, timer2启动期间画vertRects,在单步运行的时候可以发现

程序一直在循环OnPaint()里面执行
请看下面的程序示意,为什么Timer没有用呢??(之前已经通过按空格键把“Timer1.Start()”了)
...
        protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
        {
            device.Clear(ClearFlags.Target, Color.Black, 1.0f, 0);
            SetupCamera();
            device.BeginScene();
            device.VertexFormat = CustomVertex.PositionColored.Format;
            if (displayFlag == true)
            {
                device.DrawUserPrimitives(PrimitiveType.TriangleList, N, verts);
                device.DrawUserPrimitives(PrimitiveType.TriangleList, 2, vertRects);
            }
            else
            {
                device.DrawUserPrimitives(PrimitiveType.TriangleList, 2, vertBackground);
            }
            device.EndScene();

            device.Present();
            this.Invalidate();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            displayFlag = !(displayFlag);
            timer2.Start();
            timer1.Stop();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            displayFlag = !(displayFlag);
            timer1.Start();
            timer2.Stop();
        }
...
想了好一会了,应该怎么样才能实现我想要的目的??谢谢。

35

主题

370

帖子

376

积分

中级会员

Rank: 3Rank: 3

积分
376
发表于 2006-11-4 20:18:00 | 显示全部楼层

Re:OnPaint和Timer共用的问题

private void timer1_Tick(object sender, EventArgs e)
        {
            displayFlag = !(displayFlag);
            timer2.Start();
            timer1.Stop();
        }

        private void timer2_Tick(object sender, EventArgs e)
        {
            displayFlag = !(displayFlag);
            timer1.Start();
            timer2.Stop();
        }

--------------------------------------------
等效于
private void timer1_Tick(object sender, EventArgs e)
        {
            displayFlag = !(displayFlag);
        }
要那么麻烦干什么?

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2006-11-6 09:09:00 | 显示全部楼层

Re:OnPaint和Timer共用的问题

不等效啊, 我是想让Timer1每次执行完一次就stop一次,然后timer2开始执行,执行完再停止然后timer1执行, 我是想交替执行Timer1和Timer2啊

3

主题

16

帖子

16

积分

新手上路

Rank: 1

积分
16
 楼主| 发表于 2006-11-6 09:11:00 | 显示全部楼层

Re:OnPaint和Timer共用的问题

就是说我想让窗体在Timer1执行时候,显示一个图形,在Timer2时候刷新显示另外一个图形,如此往复的,请问怎么弄呢?

0

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2006-11-15 13:19:00 | 显示全部楼层

Re: OnPaint和Timer共用的问题

晕倒,楼上的考虑这个问题,为什么一直要用timer事件呢,为什么不考虑用用一个线程来完成画图操作呢?启动一个线程,通过你的flg标志,来调用不同的绘图函数不就ok了嘛
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 20:47

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表