【100分求解】图片移动起来闪呀闪呀闪。。。。

问题描述

我把一张图片设置为背景图片,当角色移动是总是闪呀闪。。。。求解决!谢谢!usingSystem;usingSystem.Windows.Forms;usingSystem.Drawing;usingSystem.Threading;namespace多线程带参数{classForm1:Form{privatePictureBoxpic;privatestaticintBit_X,Bit_Y;privateintX,Y;Bitmapbit;int[]Map1;publicForm1(){InitMap();Initialize();Threadthread1=newThread(newThreadStart(ManMove));thread1.IsBackground=true;thread1.Start();}privatevoidInitialize(){pic=newPictureBox();pic.Size=newSize(32,48);pic.Location=newPoint(0,0);pic.BackColor=Color.Transparent;this.SuspendLayout();Panelpanel1=newPanel();panel1.Dock=DockStyle.Fill;panel1.Controls.Add(pic);this.Controls.Add(panel1);//209this.Size=newSize(640,432);this.StartPosition=FormStartPosition.CenterScreen;this.ResumeLayout();panel1.BackgroundImage=Image.FromFile("MAP.png");X=Y=Bit_X=Bit_Y=0;//this.BackColor=Color.Red;this.KeyDown+=newKeyEventHandler(Form1_KeyDown);//CheckForIllegalCrossThreadCalls=false;//panel1.BackColor=Color.Black;this.pic.ResumeLayout(false);((System.ComponentModel.ISupportInitialize)(this.pic)).EndInit();this.ResumeLayout(false);this.PerformLayout();}privatevoidInitMap()//初始化地图数据{Map1=newint[20];int[]tree={6,10,20};}privatevoidDrawMap()//画图{}publicvoidForm1_KeyDown(objectsender,KeyEventArgse)//按钮事件{if(e.KeyCode==Keys.Up){Y-=1;Bit_Y=144;if(Y<0)Y=0;}elseif(e.KeyCode==Keys.Down){Y+=1;Bit_Y=0;if(Y>this.ClientSize.Height-pic.Size.Height)Y=this.ClientSize.Height-pic.Size.Height;}elseif(e.KeyCode==Keys.Left){X-=1;Bit_Y=48;if(X<0)X=0;}elseif(e.KeyCode==Keys.Right){X+=1;Bit_Y=96;if(X>this.ClientSize.Width-pic.Size.Width)X=this.ClientSize.Width-pic.Size.Width;}}privatevoidManMove()//人物移动{while(true){bit=newBitmap(32,48);Graphicsg=Graphics.FromImage(bit);//bit.RotateFlip(RotateFlipType.Rotate90FlipY);Rectanglerect=newRectangle(Bit_X,Bit_Y,32,48);RectanglerectLoca=newRectangle(0,0,32,48);Bitmapm2=newBitmap("MAN2.png");//;g.DrawImage(m2,rectLoca,rect,GraphicsUnit.Pixel);pic.Image=bit;Thread.Sleep(200);Bit_X+=32;if(Bit_X>=128)Bit_X=0;MethodInvokerm=newMethodInvoker(Move_Loca);this.BeginInvoke(m);//异步执行委托}}privatevoidMove_Loca()//位置变换{pic.Location=newPoint(X,Y);}}}

解决方案

解决方案二:
设置利用winForm的一个属性,DoubleBuffer设置true,用双缓存处理Form界面内容加载,可以提高页面显示质量。
解决方案三:
代码上没看到什么问题,都是先画在image最后放到控件上显示。双缓存如果不好用的话可能还是多线程画图有什么地方没有解决好
解决方案四:
我也遇到类似的问题。控件显示滚动重绘,都会闪动。顶个

时间: 2024-12-28 07:39:06

【100分求解】图片移动起来闪呀闪呀闪。。。。的相关文章

如何开通短信平台,比如类似短信防伪那样的?另版块100分求解

问题描述 想给公司产品开通个短信查询服务,消费者139***购买了我们的产品后,根据产品上的一个查询码aaa,发送这个查询码aaa到指定的短信号如400**(就是我们想要开通的)什么的上面,那么我们短信平台400**就反馈给消费者139***该aaa相关的具体产品信息,有点类似短信防伪查询那样,请问我们怎样怎么做呢,找移动联通都说没有这样的业务,她们说是网站搞的这,和它们没有关系,竟是扯蛋请问如何开通怎样的服务呢,另外新浪以前有可以直接调用的webservice,现在也不可以用了,应该如何和新浪

请教高手 如何在dataset 中获取所选择的数据???100分求解 急寻中 !!

问题描述 user:usernamesex张三男李四男王五女赵六女张三男张七男datasetdt;dt=dataset("select*fromuser");//dataset()方法为获取datasetresponse.writedt.table[0].row.count//此时输出=6我想筛选掉dt里性别为女的数据,请问该如何进行dt筛选呢(注意:不在dataset("select*fromuser");做筛选,这也我也会)我看到有的人写dt.Tables[0]

ibm 一道编程题(英文),100分求解,急急急呀!

问题描述 一共三部分,我基本完成了part1的显示文件,希望有哪位高手可以帮我完成剩余部分,如果可以全部完成的话,我可以再发2贴,总计300分回报....十分紧急,越快越好...谢谢!! 解决方案 解决方案二:附件下载不了解决方案三:可以下的解决方案四:下不了解决方案五:那我贴出来,请各位帮忙啊~第一部分,我已经做完了,因为每部分都有关联,所以提上来Activities1.Createtwosourcephysicalfiles:QDDSSRCandQCLLESRCforyoursourceco

100分求解:c#访问https的webservice 在线急等!!

问题描述 使用wsdl生成代理类时就报错了,应该怎么弄,第一次接触https的webservice,服务应该是用java开发的webservice地址:https://ross.ote.cnnic.cn:8443/cnnicAPI/services/registrant?wsdl在线急等!! 解决方案 解决方案二:这个是远程证书问题啊如果不想验证证书,就添加ServerCertificateValidationCallback,并且在回调函数内直接返回true解决方案三:引用1楼songbing

100分求解:通过jdbc连接池访问外部db第一次检索速度特慢

问题描述 哪位高人遇到过这个问题啊,我们用weblogic配置jdbc链接池访问oracle,但是每次weblogic启动后第一次访问的sql都非常慢比如程序一个10个sql,这些sql第一次运行都要超过10秒,第2次就2秒以下了.oracle是10g的.weblogic还配置了其他db的链接池,都没有问题,唯独外部db的池有这个问题.因为这个外部db是在别的地方,不属于我们管理,也无法看执行计划,我们只知道都是view,而且view还是比较复杂的.是否有结果集缓存的原因,使得第一次非常慢哪?但

(webwork+spring+ibatis+mysql)linux下的异常,100分求解

问题描述 在服务器硬重启后,过段时间就会产生异常(在保存大表单数据的时候)麻烦哪位大侠看看ClientAbortException:java.net.SocketException:Brokenpipeatorg.apache.catalina.connector.OutputBuffer.doFlush(OutputBuffer.java:327)atorg.apache.catalina.connector.OutputBuffer.flush(OutputBuffer.java:293)a

100分求解 我郁闷啊为什么dataset 写的xml文件却无法读取呢???

问题描述 datasetread;read=get_dataset("select*fromuser")read.WriteXml(Server.MapPath("Findxml/xml.xml"));以上写成一个xml文件,没有问题(确实生成了这个文件,文件里的代码也没有问题)但是这里read.ReadXml(Server.MapPath("Findxml/xml.xml"));怎么就错了呢,提示我为将对象引用到实例请高手指点为什么会出现这个问

100分求解,WebService中的方法要返回一个ArrayList类型,但是却抱错,又没有兄弟做过?怎么实现?求教了!

问题描述 是这样,我的WebServicez的方法AFunction中必须返回一个ArrayList类型[WebMethod]publicArrayListAFunction(){ArrayListA=newArrayList();......//中间过程省略......returnA;}A返回值中实际包含的是一个string[]数组,也就是类似于下面的结构:|----string[0]A[0]--------|----string[1]|----string[0]A[1]--------|--

[100分]求解一个按照生成数组的问题

问题描述 假如有如上的图,节点s和节点t表示起点和终点,假设图中的其他节点表示一个工程中的若干个任务,现在我们要为这若干个任务逐个分配一个权值,当有如节点{1,2}决定哪个任务先执行时,如果给节点1的优先权11>节点2的优先权10,则节点1先执行.可以看到图中的节点有先后顺序,如1执行之后3才可以执行,如何为这些节点分配优先权能保证先序节点的优先权>后续节点的优先权呢?优先权:正整数,越大表示先执行,如图中有11个节点则最大的优先权为11,最小的为1//仅仅是随机分配优先权,却不能保证先序节点