CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  游戏开发

麻烦看一眼

楼主steve_shun(steve)2003-01-13 17:23:24 在 专题开发/技术/项目 / 游戏开发 提问

本人有一程序,用VC6和DX写成,有关的代码如下所示,本意是在全屛模式下,在指定位置画36根红线,不料却发现过了一段时间后红线变成了黑线,不知是什么原因?  
  WinMain()函数中  
                    LineState   =   0;  
  SetTimer(hWnd,WM_TIMER,400,NULL);  
   
  WndProc()函数中  
                    case   WM_TIMER:  
                        if   (g_bActive)  
                          {                                                     LineState++;  
    if   (   LineState   >=   36   )   LineState=0;  
        }  
  break;  
                    ...  
  DisplayFrame()函数中  
   
  HPEN   hpen   =   CreatePen(PS_SOLID,   3,   RGB(255,0,0));  
  SelectObject(hdc,   hpen);  
  int   PosX,   PosY;  
  switch(LineState%6)  
  {  
  case   0:  
  PosX   =   125;  
  break;  
  case   1:  
  PosX   =   225;  
  break;  
  case   2:  
  PosX   =   325;  
  break;  
  case   3:  
  PosX   =   425;  
  break;  
  case   4:  
  PosX   =   525;  
  break;  
  case   5:  
  PosX   =   625;  
  break;  
  }  
  switch(LineState/6)          
  {  
  case   0:  
  PosY   =       25;  
  break;  
  case   1:  
  PosY   =     125;  
  break;  
  case   2:  
  PosY   =     225;  
  break;  
  case   3:  
  PosY   =   325;  
  break;  
  case   4:  
  PosY   =   425;  
  break;  
  case   5:  
  PosY   =   525;  
  break;  
  }  
               
                  MoveToEx(hdc,   PosX+25,   PosY+3,   NULL);  
  LineTo(hdc,   PosX+25,   PosY+48);  
   
                  pBack->ReleaseDC(hdc);  
                  ...  
  问题点数:20、回复次数:7Top

1 楼YangLin1ST(杨家枪法第六十七代传人)回复于 2003-01-17 17:46:46 得分 10

这个问题在于每隔一段时间,程序就会重新画一遍。每此都在上次的颜色上加重了颜色,你可以设置一下   绘图的   方式,设置成   覆盖   就可以了Top

2 楼steve_shun(steve)回复于 2003-01-17 21:56:04 得分 0

杨大哥,您能不能指点一下小弟具体该怎样改好吗?小弟是初级菜鸟,麻烦您给段代码.小弟改完后马上就结贴,谢谢Top

3 楼steve_shun(steve)回复于 2003-01-18 22:06:54 得分 0

自己UP一下Top

4 楼GPE(黑客虫)回复于 2003-01-20 09:22:25 得分 4

不能了解你的真正的错误所在,但是可以提出你的绘制代码有问题  
  你没有释放创建的画笔,没有选入选出的画笔,  
  我想问题可能出在这里。Top

5 楼steve_shun(steve)回复于 2003-01-21 11:26:49 得分 0

怎么样修改呢?Top

6 楼toldds(笑傲江湖)回复于 2003-01-25 11:34:44 得分 4

楼主连这么复杂算法都想的出来,实在是在下自叹不如啊。我想你是打算画个棋盘或则什么的吧?用2个for循环大约5行代码就可以搞定。再说说你的绘制问题吧:可以使用3种方式解决:  
  1.先把背景用Brush刷一遍,呵呵,会非常慢的哦  
  2.把开始画好的线条先用背景色画一遍,呵呵,比较块的作法  
  3.改用Brush画吧,呵呵  
  正常(比较"专业")做的方法是先画到一个图片中,再用BitBlt画,哪里要修改就在BackSurface中修改哪里吧Top

7 楼zzzl(不拉拉链)回复于 2003-01-26 15:37:56 得分 2

是啊,你先用"画图"程序画好,然后,把它读进来。Top

相关问题

  • 麻烦进来看看吧!
  • 麻烦高手看看
  • 麻烦各位给看看?
  • 看看这个麻烦不
  • 菜鸟问题,麻烦大家看看。
  • LIULEE 版主 麻烦再进来看看.
  • 麻烦大家帮我看看!!
  • 麻烦看看这段代码..............
  • 麻烦看看这个代码
  • 一个小麻烦,请帮忙看看

关键词

  • 函数
  • 代码
  • posx
  • posy
  • linestate
  • 小弟
  • hpen
  • break
  • hdc
  • case

得分解答快速导航

  • 帖主:steve_shun
  • YangLin1ST
  • GPE
  • toldds
  • zzzl

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo