C# 双缓冲绘图中初始值怎么设置

问题描述

具体的绘图方式差不多了解了我写的是动态绘图从右向左移动现在唯一有一些缺憾的就是绘图最开始的一段里是直线怎么把他们隐藏掉呢?我调用绘图的类的时候,传进去的数组为初始化数组Point[]points=newPoint[500];后面用随机数传进去后续的值。publicvoidDraw_Lines(Colorcolor,PictureBoxpicbox,Point[]ptlist,intlasty){Pointtemp=newPoint();for(intj=0;j<picbox.Width-1;j++){temp=ptlist[j+1];ptlist[j]=newPoint(temp.X-1,temp.Y);}Pointlastpt=newPoint();lastpt.X=picbox.Width;lastpt.Y=lasty;ptlist[picbox.Width-1]=lastpt;Graphicsg2=picbox.CreateGraphics();g2.DrawLines(newPen(color,2),ptlist);}

以上为动态绘图的代码问题出在第一次传入值的时候即lastpt点的第一次赋值,前面数组点的初值都为(0,0),逐个移动后为(-1,0),而数组的最后一个点的坐标经赋值后为传入值,如(200,400)调用DrawLines()后,开始画的就是一条直线这条直线怎么隐去?我想达到的效果是开始绘图的一段时间图像从右往左移动,左边的一面是空白的。直到有用的数据图像占完整个屏幕。

解决方案

解决方案二:
不要DrawLines,而是用循环DrawLine这样就可跳过(0,0)和(-1,0)
解决方案三:
引用1楼xuzuning的回复:

不要DrawLines,而是用循环DrawLine这样就可跳过(0,0)和(-1,0)

刚看到您的回答~多谢指教。明天试试~

时间: 2024-09-28 05:32:34

C# 双缓冲绘图中初始值怎么设置的相关文章

[Qt教程] 第18篇 2D绘图(八)双缓冲绘图

[Qt教程] 第18篇 2D绘图(八)双缓冲绘图 楼主  发表于 2013-5-2 22:07:23 | 查看: 789| 回复: 1 双缓冲绘图 版权声明 该文章原创于Qter开源社区(www.qter.org),作者yafeilinux,转载请注明出处! 导语 在前面一节中,讲述了如何实现简单的涂鸦板,这一次我们将实现在涂鸦板上绘制图形,这里以矩形为例进行讲解.在后面还会提出双缓冲绘图的概念. 环境:Windows Xp + Qt 4.8.4+QtCreator 2.6.2 目录 一.绘制矩

c#-C#双缓冲绘图,怎么样变换填充图片?

问题描述 C#双缓冲绘图,怎么样变换填充图片? 填充图片变换.例如,白色变成黑色,黑色变成白色.谢谢各位老师了. 解决方案 直接取rgb值,然后取反就可以了. 解决方案二: C# 双缓冲绘图C#双缓冲绘图C#绘图双缓冲

基于对话框的简单双缓冲绘图框架

   基于文档视图结构程序的双缓冲绘图框架比较多,那么如何在对话框上绘图呢?以前通常的做法是拖一个静态文本控件或其它控件当作绘图区域或者在这个区域上创建一个视图出来.看了微软的一个示例程序DrawCli(一个绘图的单文档程序),产生了一些灵感,决心把它移植到对话框绘图上,摸索了一下,搞了一个基于对话框的简单双缓冲绘图框架.      具体代码如下,对话框头文件代码:      [cpp] view plaincopy #include <vector>   //@brief 直线结构体   s

双缓冲绘图和窗口控件的绘制——ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误 .

双缓冲绘图和窗口控件的绘制 ---ATL ActiveX 窗口控件生成向导绘制代码OnDraw的一个错误   cheungmine 我们通常使用ATL COM组件,生成一个带窗口的ActiveX控件,然后希望在这个窗口中绘制我们的图像.图形等数据,然而ATL向导生成的代码中包含很多错误,下面是其自动向导生成的代码:     HRESULT OnDraw(ATL_DRAWINFO& di)    {        RECT& rc = *(RECT*)di.prcBounds;       

关于双缓冲绘图的困扰 求大神帮助

问题描述 这个是困扰我很久的问题,代码如下,绘图试图用双缓冲技术,在RollBall这个继承Frame的时候,一切正常,说明线程里的repaint()方法是去调用update()了:但如果在RollBall继承的是JFrame时,我发现线程里的repaint()是绕过update()而直接调用paint()方法去了.我想用继承JFrame的方法就能实现这个无闪烁的绘图,但不知道问题出在哪里,请求各位帮助,谢谢了!!packagedefaultPackage;importjava.awt.*;im

双缓冲解决VC++绘图时屏幕闪烁_C 语言

通常来说程序根据需要调用Invalidate(FALSE)使窗口客户区无效引起重绘,然后在窗口OnPaint函数(基于文档视图的程序则是OnDraw)中进行稳定绘图就行了.但是,我们在OnPaint中进行多重绘制(画背景.棋盘.棋子等),前后绘制的反差造成了闪烁现象.以前知道Java中解决屏幕闪烁问题是用双缓冲的方法,现在发现在vc++中也是可以这么做的.简单来说,双缓冲就是先把需要绘制的东西全部一口气画在内存中,最后把内存中的数据搬到屏幕上显示. 最近做中国象棋,绘制界面时遇到些问题,绘图过程

内存拷贝-MFC中图像无法使用双缓冲拷贝

问题描述 MFC中图像无法使用双缓冲拷贝 我接手了别人的程序,需要使用双缓冲绘图,程序中定义的内存对象pDC可以绘制任何曲线,绘制完毕后复制给窗体.但是内存对象pDC就不能进行BitBlt操作,哪怕是自身平移拷贝自身都不可以.pDC->BitBlt(0, 0, rect.Width(), rect.Height(),pDC, 10, 10, SRCCOPY);不知道是pDC哪里设置有了问题?

GDI绘图 双缓冲贴图 电脑死机

问题描述 GDI绘图 双缓冲贴图 电脑死机 绘图的时候使用了双缓冲贴图 然后自己定义了一个透明贴图的函数DrawTransBitmap,贴图成功了,但是程序一运行内存就飞速增长.不关的话马上就死机了,小白一枚 求各位大神帮忙 万分感激 解决方案 case WM_PAINT: hdc = GetDC(hwnd); mdc = CreateCompatibleDC(hdc); bufdc = CreateCompatibleDC(hdc); bufdc2 = CreateCompatibleDC(h

基于WTL中使用双缓冲避免闪烁的解决方法_C 语言

在自己画的窗口中,有时候会有闪烁现象.为什么会有闪烁现象呢?其实是因为程序在画窗口时需要用背景色清空显示区域,然后再画.由于这两者的反差比较大,就会被人眼睛捕捉到,感觉闪烁.双缓冲就是先在内存中把图画好,然后直接复制到屏幕上去,这样的反差就比较小,也就不觉得闪烁了. WTL中的CDoubleBufferImplWTL中有现成的双缓冲类实现,可以很方便的使用就达到效果.CDoubleBufferImpl 在AtlFrame.h中.1.首先继承自CDoubleBufferImpl 复制代码 代码如下