模拟点阵屏问题

问题描述

我在form窗体上模拟点阵屏,绘制了很多16*16的点阵,但是却不能清除,请问如果我想清除已经绘制好的点阵,我该怎么做呢?

解决方案

解决方案二:
你是怎么绘制的?
解决方案三:
画在控件上的,可以尝试控件的clear或者移除后再添加,form上就只能用背景色重新画一遍
解决方案四:
classDotScreen:Control{privateint_DotWidth=5;publicintDotWidth{get{return_DotWidth;}set{if(value==_DotWidth)return;_DotWidth=value;this.Height=0;this.Invalidate();}}privateSize_DotSize=newSize(10,10);publicSizeDotSize{get{return_DotSize;}set{if(value==_DotSize)return;_DotSize=value;this._DotSwitch=newbool[value.Width,value.Height];this.Height=0;this.Invalidate();}}privatebool[,]_DotSwitch=newbool[10,10];publicbool[,]DotSwitch{get{return_DotSwitch;}}publicDotScreen(){this.SetStyle(ControlStyles.ResizeRedraw,true);this.SetStyle(ControlStyles.OptimizedDoubleBuffer,true);this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);this.SetStyle(ControlStyles.SupportsTransparentBackColor,true);}protectedoverridevoidSetBoundsCore(intx,inty,intwidth,intheight,BoundsSpecifiedspecified){width=this._DotWidth*this._DotSize.Width;height=this._DotWidth*this._DotSize.Height;base.SetBoundsCore(x,y,width,height,specified);}protectedoverridevoidOnPaint(PaintEventArgse){for(intx=0;x<this._DotSize.Width;x++){for(inty=0;y<this._DotSize.Height;y++){e.Graphics.FillEllipse(this._DotSwitch[x,y]?Brushes.Red:Brushes.Gray,x*this._DotWidth,y*this._DotWidth,this._DotWidth,this._DotWidth);}}base.OnPaint(e);}}

解决方案五:
classDotScreen:Control{privateint_DotWidth=10;[Description("点的大小")]publicintDotWidth{get{return_DotWidth;}set{if(value==_DotWidth)return;_DotWidth=value;this.Height=0;//触发SetBoundsCorethis.Invalidate();}}privateSize_DotSize=newSize(10,10);[Description("点阵尺寸")]publicSizeDotSize{get{return_DotSize;}set{if(value==_DotSize)return;_DotSize=value;this._DotSwitch=newbool[value.Width,value.Height];this.Height=0;this.Invalidate();}}privatebool[,]_DotSwitch=newbool[10,10];[Description("点阵开关")]publicbool[,]DotSwitch{get{return_DotSwitch;}}publicDotScreen(){this.SetStyle(ControlStyles.ResizeRedraw,true);this.SetStyle(ControlStyles.OptimizedDoubleBuffer,true);this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);this.SetStyle(ControlStyles.SupportsTransparentBackColor,true);}//固定控件尺寸protectedoverridevoidSetBoundsCore(intx,inty,intwidth,intheight,BoundsSpecifiedspecified){width=this._DotWidth*this._DotSize.Width;height=this._DotWidth*this._DotSize.Height;base.SetBoundsCore(x,y,width,height,specified);}protectedoverridevoidOnPaint(PaintEventArgse){for(intx=0;x<this._DotSize.Width;x++){for(inty=0;y<this._DotSize.Height;y++){e.Graphics.FillEllipse(this._DotSwitch[x,y]?Brushes.Red:Brushes.Gray,x*this._DotWidth,y*this._DotWidth,this._DotWidth,this._DotWidth);}}base.OnPaint(e);}}

注释往加上了如果不想自己手动刷新那就自己做索引器修改DotSwitch后在控件内部自己刷新

时间: 2024-09-17 01:34:19

模拟点阵屏问题的相关文章

阿里云发布异构计算产品家族,你可以在上面模拟核爆炸

本文讲的是阿里云发布异构计算产品家族,你可以在上面模拟核爆炸 数据.算力和算法,这是人工智能发展的三大要素. 近一年来,人工智能迎来了史上第三次热潮.移动互联网时代沉淀下来的大量数据和GPU近几年的快速发展,让学界和业界相信,这人工智能时代真的要来了. 由于人工智能模型训练对算力的要求,原有的通用型CPU架构无法满足,不少企业或科研机构在训练模型的时候会通过采用和主处理器(CPU)不同架构的加速器件(也就是所谓"异构"),如GPU.FPGA.ASIC等器件,提供高密度并行计算的运算能力

新浪微博模拟登录(Java)

     使用HttpClient模拟新浪微博登录,贴在这里做个备忘,也希望能帮助到有这方面需求的童鞋们,代码如下:        Java代码   package com.yida.spider4j.crawler.test.sina;      import java.io.UnsupportedEncodingException;   import java.math.BigInteger;   import java.net.URLEncoder;   import java.secur

Excel工作表中使用模拟运算表的方法

  Excel工作表中使用模拟运算表的方法          1.创建一个新的Excel工作表,并在工作表输入数据.在B9单元格中输入提成金额的计算公式"=$B$2*$B$3",如图1所示. 图1 创建工作表并输入公式 2.在B10:B23单元格区域中输入提成比率,然后选择用于创建模拟运算表的单元格B9:I23,在"数据"选项卡的"数据工具"组中单击"模拟分析"按钮,在打开的下拉列表中选择"模拟运算表"选项

控制-android 4.X如何模拟鼠标或者直接用代码调出鼠标光标

问题描述 android 4.X如何模拟鼠标或者直接用代码调出鼠标光标 最近在做android设备之间的远程控制,需要在一个android客户端(装了客户端软件)中控制另一android服务器端(装了服务器后台程序),在服务器调出android鼠标光标,请问怎么实现啊?求助.....大侠们.....

验证码-用php模拟登陆方正教务系统的问题

问题描述 用php模拟登陆方正教务系统的问题 获取验证码 <?php header('Content-Type:image/png');$authcode_url=""http://jwxt1.cumt.edu.cn/CheckCode.aspx"";$cookieFile=""cookie.tmp"";$ch = curl_init($authcode_url);curl_setopt($chCURLOPT_COOKI

UVa 550 Multiplying by Rotation:模拟乘法

550 - Multiplying by Rotation Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=100&page=show_problem&problem=491 Warning: Not all numbers in this problem are decimal numbers! Multiplic

设计-学生在线答疑排队模拟C语言版的程序代码有木有呢?

问题描述 学生在线答疑排队模拟C语言版的程序代码有木有呢? 程序设计思路: 1.主函数main( ),打印输出主控程序菜单选项,并接收用户的选择项 2.定义学生信息(学号.姓名)的数据存储结构 3.设计学生在线答疑排队模拟程序的功能函数EnQueue( ),处理新学生加入排队的情况 4.设计学生在线答疑排队模拟程序的功能函数AnsQ( ),处理队列中第一个学生出队列答疑的情况 5.设计功能函数PrintQ( ),输出队列中所有正在排队的学生信息. 6.当用户退出答疑程序时,检查队列是否为空.如仍

android:镜头模拟快门闭合效果Demo

问题描述 android:镜头模拟快门闭合效果Demo 有没有大神做过这个类似的效果http://www.5icool.org/a/201107/487.html,android用的,给一个思路,共同进步 解决方案 http://www.5icool.org/a/201107/487.html 解决方案二: android 模拟下雪的效果

谷歌chrome模拟手机浏览器伪造位置方法

打开chrome浏览器,新建标签页,按"F12"打开控制台,点右下角的小齿轮,在弹出的窗口选择Overrides选项卡,把User Agent勾上,在下面的下拉框选择你喜欢的手机UA,这样你就能把Chrome伪装成手机浏览器了. 如果再把把右边的Override Geolocation也勾上,就可以模拟位置了,但需要我们自己设置位置坐标.步骤如下: 打开https://maps.google.com/ 找到你假冒的地点,右击鼠标,选择"这儿是什么?"? 然后搜索框就