为什么重绘?
就是因为画板做好之后,在上面画了一些图形,但当我
们最大化或最小化之后原来画的图形便消失了,图形没有在面板上存
起来。我们现在刚刚接触的重绘,并不是储存像素点,而是譬如说直
线,要用到两组坐标,我们用数组存的是坐标而已,等到调用重绘方
法时再用drawline重绘直线。但还有好多工具要用的,矩形,圆,刷
子,橡皮等,这些工具,我们如果一个一个的写,非常麻烦,所以二
维数组,用二维数组进行存储,遍历数组,写出方法即可。
那么重绘用到的方法就是paint(),那在画图板中我们用到的是
JFrame,所以重绘的方法只能写在JFrame类里,重写paint方法我们
要用super.paint(g),如果没有super,窗体只显示一个框框,根本没
有面板的说,很恐怖啊。原因就是窗体属于重量级组件,但是面板,
按钮,菜单栏都属于轻量级的组件,如果不用super是无法使这些轻量级
的组件显示出来的。
其实这样说起来觉得很简单,但是一到操作的时候,就各种小问题全都
出现了。我把数组写在不同的类里之后,忘传递参数了,一会儿又忘了获取画布对象,
致使我的重绘弄了好久,但是算是小部分成功之后,会发现,只要最大化或最小化,
它的图形总会有些移动或者说变的很奇怪,这个晚上去问,问完再改吧。
分享到:
相关推荐
本主题将深入探讨如何进行MFC单文档界面的全部重绘,包括标题栏、工具栏和菜单的自定义重绘。 1. **重绘基础** MFC提供了OnEraseBkgnd()和OnPaint()这两个消息处理函数,用于处理窗口背景的擦除和绘制。重绘SDI...
在编程领域,特别是GUI(图形用户界面)设计中,按钮和列表框的重绘是两个重要的概念。这些组件是用户与应用程序交互的主要方式,因此它们的外观和行为必须符合用户的期望,并能根据需要动态更新。下面我们将深入...
在处理动态数据或者需要更新图表的情况下,我们可能需要对Highcharts进行刷新或重绘。本文将深入讲解Highcharts的封装、刷新和重绘方法,并提供相关代码示例。 ### 1. Highcharts的封装 封装Highcharts是为了更好...
本篇将详细探讨如何“重绘`DataGridview`”以及在“在`DataGridview`绑定数据源的同时更新列表框的值”。 首先,理解“重绘`DataGridview`”的概念。在编程中,重绘通常是指当控件的外观需要改变时,如数据更新、...
本文将深入探讨如何利用MFC中的CButton控件,并结合GDI+技术来实现不规则形状和透明效果的按钮重绘。 首先,让我们了解CButton控件。它是MFC库中一个基本的用户界面元素,用于创建具有标准按钮功能的窗口。默认情况...
在给定的“pictureBox图片重绘.rar”压缩包中,我们可以推测其中包含了一些GDI+的实践代码,用于演示如何在PictureBox控件上实现刮刮乐效果。 刮刮乐效果通常通过覆盖原始图像的某些部分来模拟刮开涂层的过程。在C#...
在本文中,我们将深入探讨如何利用双缓冲技术来优化static控件的重绘过程,以及如何在重绘的控件上绘制数字和波形。我们将主要使用Microsoft Visual Studio 2010作为开发环境,并使用C++语言进行编程。 双缓冲是一...
然而,系统默认的ProgressBar样式可能无法满足所有设计需求,这时就需要通过自定义重绘来实现更丰富的视觉效果。本文将深入探讨如何使用C#语言在.NET环境下对ProgressBar进行重绘和美化,以实现图像、单色、渐变色等...
在这种情况下,将Combobox的显示项重绘为表格形式会更便于用户浏览和选择。下面我们将详细探讨如何实现这一功能。 首先,我们需要了解标准Combobox的基本结构和功能。Combobox通常由两部分组成:下拉列表和编辑框。...
这里,`font` 是一个已定义的CFont对象,`TRUE` 表示在窗口重绘时自动释放字体资源。 ### 四、动态创建和销毁控件数组 有时,我们可能需要在程序运行时动态创建和销毁控件数组。这可以通过调用 `CreateWindow` 或 ...
本实例中,我们将深入探讨如何利用VC来创建一个能够重绘波形、展示时域与频域信息的示波器程序。 首先,"波形重绘"是指当输入信号发生变化或用户调整参数时,示波器能够实时更新并显示新的波形。这通常涉及到图形...
此外,考虑到状态管理,可以使用微信小程序的Page对象提供的data属性来存储二维数组,每次数组变化时,通过this.setData方法更新数据,这会触发页面的自动重绘。同时,为了防止数据错乱,应确保在并发操作(如多个...
当窗口需要重绘时,系统会发送此消息。 4. 在WM_PAINT消息的处理中,获取窗口的设备上下文(GetDC)。 5. 创建一个位图对象(CreateBitmap),指定位图的宽度、高度、颜色位深度等信息。位图的宽度应该是数组宽度...
然后在onRender()方法中,使用SpriteBatch重绘地图。 8. **优化**:为了提高性能,可以考虑使用TileMap,它是AndEngine提供的另一种高效处理地图的方式。TileMap可以将地图拆分成多个小块(Tiles),进一步减少渲染...
最后,如果需要动态更新位图,例如在帧率较高的动画中,可以定期更新内存位图并调用RedrawWindow函数强制控件重绘,以实现连续的图像变化。 总结来说,将数组数据以位图形式显示在MFC对话框的控件上,涉及的关键...
《VC++深入详解》第11章主要探讨了在Windows编程中如何处理图形的保存、重绘以及坐标空间转换的问题。以下是对章节内容的详细解释: 1. **坐标空间和转换**: - **坐标空间**:在Windows编程中,坐标空间是用于...
为了实现动态效果,可以通过设置窗口的定时器(`SetTimer()`),并在`WM_TIMER`消息处理中调用`InvalidateRect()`函数来强制窗口重绘。 ```c case WM_TIMER: if (wParam == 1111) InvalidateRect(hwnd, NULL, 1);...
此外,为了提高性能和避免不必要的重绘,`TextQuXianView`可能实现了`setNeedsDisplay`和`setNeedsDisplay(in:)`方法,以便在数据改变时仅重新绘制受影响的部分。也可能有方法用于更新数据数组,从而更新显示的曲线...
此外,如果需要根据数组数据动态改变画图内容,可以在控件数组的其他事件(如Click或Change事件)中更新绘图参数,然后调用Invalidate方法强制重绘控件。这样,数组中的每个控件都可以根据其自身的数据或状态显示...
根据给定的信息,我们可以分析并总结出以下与“数组游戏之三——飞机大战”相关的IT知识点: ### 1. C语言基础知识 - **文件包含**:`#include`语句用于引入标准库或其他头文件,例如`<stdio.h>`、`<math.h>`和`...