关于重绘...
第一次接触重绘,是画五子棋的时候,创建窗口后调用方法绘制棋盘,但是每一次移动窗口或者试图改变窗口大小时都会遇到棋盘
消失的情况。后来说是系统本身有一个绘制画布的方法,每一次移动或改变窗口的位置和大小事都会调用这个方法,重新绘制画布。
而我们直接在窗体中画的东西实际上都是画在画布上的。而系统中自带的重绘方法只有重绘画布,而不包含我们在画布上所画的东
西。为了解决这个问题,我们的解决方法是重写重绘方法,在重绘方法中绘制棋盘,这样,每次我们移动窗体,系统自动调用重绘
方法时都会将我们的棋盘一并重绘。
但是在重绘中要注意的一点是,重写重绘方法时,必须要调用父类的重绘方法,即JFrame的重绘方法,因为我们重写重绘方法之
后会覆盖本来系统的重绘方法,系统的重绘方法是绘制画布,在视觉上看来就是画上了窗体的背景色,如果我们在重绘方法中不加
上super.paint(g),那么我们实际上就没有绘制画布,从视觉上看,也就没有了本来带的背景色,而是整个窗体中除了边框
中间的矩形呈现黑色。所以,一定要记住,重写重绘方法时一定要调用父类的重绘方法。
还有就是重写重绘方法时,先要获取画布,语句是:Graphics g=this.getGraphics();this指代的是当前要重绘画
布的窗体。
一下是五子棋绘制棋盘时的重绘方法(不包含棋子的重绘)
public void paint(Graphics g){
super.paint(g);
//依据画布大小绘制棋盘以及确定棋子大小
//绘制竖线
for(int i=0;i<Config.LINE_H+1;i++){
PaintShape ps=new PaintShape(g,"line",(int)Config.X+i*Config.SIZE,Config.Y,
(int)Config.X+i*Config.SIZE,Config.Y+Config.SIZE*Config.LINE_W);
}
//绘制横线
for(int j=0;j<Config.LINE_W+1;j++){
PaintShape ps=new PaintShape(g,"line",Config.X,(int)Config.Y+j*Config.SIZE,
Config.X+Config.LINE_H*Config.SIZE,(int)Config.Y+j*Config.SIZE);
}
}
分享到:
相关推荐
本文将深入探讨MFC中的“普通窗口重绘”这一关键知识点,包括重绘的原因、过程以及如何在MFC应用中实现窗口重绘。 首先,窗口重绘是一个常见的需求,它通常发生在以下几种情况:窗口被其他窗口覆盖后暴露出来,窗口...
在本文中,我们将深入探讨如何在MFC中重绘常见的控件,包括ListCtrl、Edit和ComboBox,这些都是Windows应用程序开发中的关键组件。 **ListCtrl控件** ListCtrl是一种多功能控件,它可以显示多列数据,类似于电子...
为了增强Edit控件的视觉效果和交互性,我们有时需要对其进行自定义重绘,使其符合特定的设计需求。本文将深入探讨如何在MFC中实现Edit控件的重绘,包括编辑框的边框处理、文字居中、非客户区与客户区的绘制,以及...
本教程将重点讲解如何在Duilib中进行控件的重绘,以实现自定义的视觉效果。 控件重绘是Duilib中实现界面个性化的重要手段。通过重绘,我们可以改变控件的默认外观,比如修改边框样式、调整颜色、添加图案或者动画...
在某些情况下,为了实现更复杂或个性化的界面效果,我们可能需要对CListCtrl进行重绘。本篇将深入探讨CListCtrl的重绘机制和如何实现全面的功能。 首先,理解CListCtrl的绘制过程至关重要。CListCtrl默认使用...
本文将深入探讨如何使用C#和GDI+来实现Winform窗体及控件的重绘功能,包括button、listbox、checkbox等常见控件,以及换肤的概念。 1. **Winform窗体的重绘** - Winform窗体的重绘通常涉及到`OnPaint`事件。当窗体...
本文将详细探讨如何在VS2017环境下,针对.Net 2.0版本的Combox控件进行重绘操作。 首先,理解“重绘”(Redraw)的概念。在Windows Forms中,当控件的外观需要改变,如颜色、样式或形状时,我们通常会进行重绘。重...
在这个场景中,我们关注的是`CMyComboBox`,这是一个自定义的组合框(ComboBox)类,它是MFC中的标准`CComboBox`类的扩展,专门为了实现自定义重绘功能而设计。 在MFC中,`CComboBox`类是用来处理Windows API中的...
本文将深入探讨如何在C#中实现`TreeView`控件的边框重绘,以创建独一无二的视觉效果。 首先,了解`TreeView`的基本属性和方法。`TreeView`控件具有`Nodes`集合,用于添加、删除或操作节点;`DrawMode`属性可以设置...
"控件重绘 C# WinForm控件美化扩展系列之TabControl"的主题聚焦于如何通过自定义控件重绘技术来优化TabControl的显示效果,使其更符合现代应用程序的审美需求。 TabControl是Windows Forms中一个常用且功能丰富的...
本节将详细介绍如何通过重绘技术实现自定义的C#按钮。 首先,理解WinForms中的控件绘制原理至关重要。Windows Forms控件,包括Button,都是基于GDI+图形接口进行绘制的。默认情况下,系统会自动处理控件的绘制,但...
C#重绘Windows窗体标题栏和边框 C#重绘Windows窗体标题栏和边框是指使用C#语言来自定义Windows窗体的标题栏和边框的样式。这种技术可以使得Windows应用程序具有更加个性化的界面,类似于QQ、MSN、迅雷等聊天工具的...
在Delphi编程中,"重绘非客户区改变窗口外观"是一个高级技术,它允许开发者超越标准窗口样式的限制,自定义窗体的外观,包括标题栏、边框等非客户区部分。这个主题通常涉及到Windows API调用,以及GDI(图形设备接口...
标题"**MFC 重绘CListCtrl、CTreeCtrl的滚动条.rar**"提供的资源正是针对这个需求,实现了滚动条的自定义重绘,以达到与控件完美融合的效果。 滚动条控件在MFC中由CScrollBar类表示,通常会与CListCtrl和CTreeCtrl...
系统默认的滚动条样式可能无法满足所有设计要求,因此开发者经常需要重绘滚动条以实现独特的皮肤效果。本文将深入探讨如何在C# WinForm中实现滚动条的重绘。 首先,我们要理解WinForm中的控件绘制机制。Windows ...
然而,有时候我们可能需要自定义ComboBox的外观或者功能,这就涉及到ComboBox的重绘技术。下面将详细介绍C# WinForms中ComboBox重绘的相关知识点。 1. **基本重绘原理** 在.NET Framework中,控件的重绘主要通过...
"窗体控件重绘"是这个过程的关键技术,它允许开发者覆盖默认的绘制行为,创建独特的视觉效果。本压缩包包含了Button、Form、CheckBox、ListBox、TabControl和TextBox等常用控件的重绘示例,这些实例代码对于初学者和...
重绘过程中,为了保持性能,可以利用Windows的消息机制,只在必要时(如tab切换、窗口大小改变等)才触发重绘。可以通过`SetRedraw`函数暂时关闭或开启控件的重绘功能,这样可以避免不必要的绘图操作。 除了`...
本篇文章将详细讲解如何在MFC应用中实现自绘或重绘右键菜单CMenu,以创建更具个性化的用户界面。 自绘(Custom Draw)或重绘(Redraw)是指在系统默认渲染的基础上,程序员通过调用特定的API函数或MFC类的方法来...
本主题将深入探讨如何进行MFC单文档界面的全部重绘,包括标题栏、工具栏和菜单的自定义重绘。 1. **重绘基础** MFC提供了OnEraseBkgnd()和OnPaint()这两个消息处理函数,用于处理窗口背景的擦除和绘制。重绘SDI...