VC使用双缓冲制作绘图控件】的更多相关文章

最近用VC做了一个画图的控件.控件在使用的时候遇到点问题.在控件里画了图之后切换到其他页面,等再切换回来的时候,发现控件里画的图都不见了.这是因为VC里面,当缩小.遮挡页面后客户区域就会失效,当再次显示的时候系统就自动调用OnDraw 函数进行重绘.所以原来保存的图形都消失了.由于我做的是控件,所以不可能用一般的方法来解决比如在OnDraw 函数里绘图.经过这种查找决定使用双缓冲绘图来解决这个问题. 普通的绘图是直接将图像绘制到设备上,双缓冲绘图是将图形绘制到内存的一张图片上,等所有的绘图完成后…
使用内存DC绘图,然后实现双缓冲,避免绘图闪烁,这个小技术简单但很有效.但是仍然有很多人说使用了双缓冲,图片却仍然有闪烁,分析了几个这样的例子,发现 其实不是双缓冲的技术问题,而是使用者没有正确理解和使用双缓冲的方法.使用双缓冲要点如下: 1. 保证绘图过程中的所有CDC及其继承类指向内存DC. 在窗口或者视图中绘图,一般都是在OnDraw或者OnPaint事件中,但是有时根据需要绘图是通过调用其他类及函数完成比较复杂的绘制,在这些函数中,有时编写者会获取诸如CClientDC,然后绘图,此时的…
在OnDraw(CDC* pDC) 中添加如下代码 CDC MemDC; //首先定义一个显示设备对象 CBitmap MemBitmap;//定义一个位图对象 //随后建立与屏幕显示兼容的内存显示设备 MemDC.CreateCompatibleDC(NULL); //这时还不能绘图,因为没有地方画 ^_^ //下面建立一个与屏幕显示兼容的位图,至于位图的大小嘛,可以用窗口的大小,也可以自己定义(如:有滚动条时就要大于当前窗口的大小,在BitBlt时决定拷贝内存的哪部分到屏幕上) MemBit…
TeeChart作为一款强大好用的绘图控件,通过它可以绘制出各式各样的图表,包括2D的,还有3D的,绘制的图表美观实用,这里主要讲述如何在VS2013/MFC中使用TeeChart控件,顺便说一下在VS2013中如何创建MFC项目. 工具/原料 Visual studio 2013 TeeChart.pro.v5.ActiveX 方法/步骤 1 在网上下载TeeChart控件并安装,安装自然不用多说,安装完后找到安装路径(带有TeeChart5.ocx文件),复制当前路径 2 安装完后需要对控件…
博客地址:博客园,版权所有,转载须联系作者. GitHub地址:JustWeTools 最近做了个绘图的控件,实现了一些有趣的功能. 先上效果图: PaintView画图工具: 1.可直接使用设定按钮来实现已拥有的方法,且拓展性强 2.基础功能:更换颜色.更换橡皮.以及更换橡皮和笔的粗细.清屏.倒入图片 3.特殊功能:保存画笔轨迹帧动画.帧动画导入导出.ReDo和UnDo GitHub地址:JustWeTools 如何使用该控件可以在GitHub的README中找到,此处不再赘述. 原理分析:…
博客园新人,WPF初学者.不涉及理论知识,直接进入操作. 记录一下使用Blend制作Button控件模板过程中,学到Blend几个知识点: 1.渐变画笔编辑器的Alpha选项可以调控件的透明度.即下图的A,可以调节百分比 渐变过程可以加上渐变点,以达到颜色的层次分明.如下图: 2.控件模板的应用,通过ControlTemplates建立.以Button模板为例: 建立一个矩形框或者Button,然后在上图位置选择“编辑当前模板”选项,即为下图: 此时可以编辑相应的模板,按钮的形状颜色等等: 在项…
1.概述 QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用,远比qwt方便和漂亮,可以自己使用两个源文件也可以自己编译成库文件,非常方便. 官方网站:http://www.qcustomplot.com/ 1.0下载地址:http://download.csdn.net/detail/czyt1988/5986701 下面展示一下它的超强功能: 1.安装 使用QCustomPlot非常简…
VC/MFC 当鼠标移到控件上时显示提示信息 ToolTip是Win32中一个通用控件,MFC中为其生成了一个类CToolTipCtrl,总的说来其使用方法是较简单的,下面讲一下它的一般用法和高级用法. 一般用法步骤: 添加CToolTipCtrl成员变量 m_tt. 在父窗口中调用EnableToolTips(TRUE); 在窗口的OnCreate(或者其他适当的位置)中向ToolTip中添加需要显示Tip的子窗口,并同时指定相应的显示字串CToolTipCtrl::AddTool(pWnd,…
TeeChart是个很强大的控件,其绘图能力之强,其他控件难以比拟,但是有个问题就是他的绘图速度,其实TeeChart绘图速度还是很快的,只是大家一直都没正确运用其功能所以导致绘图速度慢的假象. 下面说说影响绘图速度的两个主要因素 1.当点数特别多时不需要绘出全部点(性能提升不大) TeeChart绘图控件 - 之一文章里已经讲过,可以设置只绘出部分点.设置方法如图: 这个选项能一定程度的提升画图速度.提升多少,可看看如下实例: 163840个随机点,取消Draw All时效果,使用AddXY函…
1.前期准备 具体可见VS2010 使用TeeChart绘图控件 - 之一 控件和类的导入 1. 1 添加TeeChart控件,给控件添加变量m_TeeChart 添加TeeChart控件,右击控件,选择添加变量,vs会自动给我们引入CTchart1这个类,但是只有这个类,我们是远远不够的,需要添加teechart其他相关的类,添加方法在之前已经讲过,不再重复. 1.2. 引入必要的头文件 其实之前的方法比较麻烦,更简单就是通过类向导,导入类型库的类 如图进入类向导,选择添加类按钮的下拉菜单,选…
vs2010的用法和vc6有很大的不同,特别是在一些函数调用那里,当然.控件导入也是很不一样的 安装好控件后就可以在工程里加入teechart控件了 加入方法有如下几种: 1.添加Teechart控件 1.1 插入Teechart控件 1.1.1 插入控件 新建一个对话框工程,在对话框上点击鼠标右键,弹出的菜单里选择“插入ActiveX控件”   然后弹出的对话框里选择TeeChart控件 这时对话框就有TeeChart控件了     1.1.2 vs2010另外一种插入控件的方法   vs20…
原文:WPF 在绘图控件(Shape)中添加文字 [2018.7.15] Q:使用Shape的子类Ellipse画一个圆,如何在圆中添加文字? A:Shape类中不包含Text属性.可使用Shape类和TextBlock类组合,放到Grid中来实现.      纯xaml的写法: <Grid Height="50" Width="50"> <Ellipse Fill="Yellow" Stroke="Blue"…
qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等,目前已经应用到许多工业领域,同时qwt也致力于3d的开发.但许多时候,qwt的安装配置难到了许多人,我曾经也在这里原地踏步很久,为了给大家开发方便,把我的安装经验分享给大家,避免…
最近用ReoGrid表格控件和Zedgraph绘图控件写了一个TimeSeriesEditor时间序列编辑软件,如下图. 目的就是体验一下这两个空间的用法,感觉还是挺好用的, 关于软件的使用说明可以访问: http://www.timegis.com/ts.htm ReoGrid 在这里下载 https://reogrid.net/ ZedGraph 在这里下载 https://sourceforge.net/projects/zedgraph/ 这里免费分享一下软件和全部源码,感兴趣者请加入Q…
在平时的工作中,时常需要注册与反注册ActiveX控件,有时需要判断控件是否已经注册.   所以通过查找资料编写了一个控件注册的小工具,欢迎学习交流,不当之处请多多交流. 先直接上图:   主要代码: //ControlRegisterDlg.h CEdit m_EditOcxPath; CString m_strOcxPath; afx_msg void OnBtnSelect(); afx_msg void OnBtnRegister(); afx_msg void OnBtnUnregis…
用双缓冲,先在内存中绘制,然后拷贝到屏幕DC,这样就不会出现画出去的情况了,前段时间我也是为这个问题费了不少劲.我把我的一段代码给你看一下: CDC *pDC = m_drawbox.GetDC(); //这里的m_drawbox就是Picture控件对应的变量 CDC dcMem; CBitmap bitmap; bitmap.CreateCompatibleBitmap(pDC,300,300); dcMem.CreateCompatibleDC(pDC); CBitmap *pOld =…
补充记录Button控件模板 控件模板制作过程中出现下图问题:动画对象不能用于动画属性"Fill” 并且这类问题Blend4中包括VS2010中仍然可以运行,但是只有VS2010中会报错:如下图 模板代码为如下: <Style x:Key="BtnS2" TargetType="{x:Type Button}"> <Setter Property="Template"> <Setter.Value>…
Nevron Diagram for .NET是一个功能强大,世界上顶级的.NET图表控件.可扩展的图形报表构架,可以帮您创建功能丰富的Winforms及Webforms图表解决方案.这个产品构建于Nevron表述层框架之上,能为您提供令人激动的视觉冲击,您无法通过其它产品体验到 - 独一无二的商业图表应用程序.Nevron Diagram for .NET专门根据广泛的自定义需求而设计,它提供了高扩展性的对象模型,其API更加细化本地化及直观性.产品本身大量利用现代的设计模式,使其具有更高的可…
滑动控件slider是Windows中最常用的控件之一.一般而言它是由一个滑动条,一个滑块和可选的刻度组成,用户可以通过移动滑块在相应的控件中显示对应的值.通常,在滑动控件附近一定有标签控件或编辑框控件,用于显示相应的值.滑动控件在应用程序中用途级为广泛,如在桌面的属性中就可以看到.为此,让我们一起来看一下它的实现方法. (1)在VC++ 2008中新建一个对话框文档的工程. (2)打开资源管理器,在对话框中放置一个EDIT控件,然后在它旁边放上一个Slider控件.基本的框架已经完成了. (3…
使用C#开发ActiveX控件 控件开发.制作CAB包.签名.部署 ActiveX控件以前也叫做OLE控件,它是微软IE支持的一种软件组件或对象,可以将其插入到Web页面中,实现在浏览器端执行动态程序功能,以增强浏览器端的动态处理能力.通常ActiveX控件都是用C++或VB语言开发,本文介绍另一种方式,在.NET Framework平台上,使用C#语言开发ActiveX控件. 虽然本文通篇都在讲如何使用C#语言开发ActiveX控件,但我并不极力推荐使用这种技术,因为该技术存在明显的局限,即需…
本文讨论的重点介于两者 之间 — 公共控件赋予您想要的大部分功能,但控件的外观并不是您想要的.例如,列表视图控件提供在许多视图风格中显示数据列表的方式 — 小图标.大图标.列表和详细列表(报告).然而,如果您想要一个网格控件,那结果怎样呢?尽管公共控件库里没有特别包含网格,但是列表视图控件与它较为接 近,它以行和列显示数据,并有一个相关的标头控件.因此,许多人以一个标准的列表视图控件为起点创建自己的网格控件,然后重写该控件及其子项的呈现方式或 绘制方式. 主宰绘图操作即使“只”进行绘制,您仍然有…
--------本来为作者原创,未经同意禁止转载 前言:我们在很多时候都需要在res/drawable文件夹下创建相应的xml文件来为控件添加一些样式效果,比如按钮按下时的按钮样式变化.或者指定按钮的一些边框样式.或者为常用的EditText.TextView.ImageView.ImageButton等等添加一些样式.今天我们就来讲下怎么制作圆形Button.圆形ImageView.圆形....等,并且使用Animation给它们添加弹跳动画. 我们就先讲一下shape标签的属性吧: 我们在x…
1.由于“开发工具”不经常用,所以在功能选项面板中没有“开发工具”这一栏.所以我们需要设置.在功能选项面板中选择“文件”,在跳转出来的版面中选择“选项”.…
首先在前台拖入一个名为chart1的MSChart控件 //折线图 string strLegend = "Legend1"; Legend lg = new Legend(strLegend); lg.IsDockedInsideChartArea = false; lg.TitleAlignment = System.Drawing. StringAlignment.Center; chart1.Legends.Add(lg); ChartArea ca = new ChartAr…
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnCtlColor(CDC *pDC,CWnd *pWnd,UINT nCtlColor);参数nCtlColor用于指定控件的类型,可以是:.CTLCOLOR_BTN 按钮控件.CTLCOLOR_DLG 对话框.CTLCOLOR_EDIT 编辑框.CTLCOLOR_LISTBOX 列表控件.CTLCO…
本例使用AnyCAD .Net三维图形控件快速实现一个DXF文件的读取.显示.导出JPG.PNG.PDF的应用. 代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using…
qwt是一个基于LGPL版权协议的开源项目, 可生成各种统计图.它为具有技术专业背景的程序提供GUI组件和一组实用类,其目标是以基于2D方式的窗体部件来显示数据, 数据源以数值,数组或一组浮点数等方式提供, 输出方式可以是Curves(曲线),Slider(滚动条),Dials(圆盘),Compasses(仪表盘)等等,目前已经应用到许多工业领域,同时qwt也致力于3d的开发.但许多时候,qwt的安装配置难到了许多人,我曾经也在这里原地踏步很久,为了给大家开发方便,把我的安装经验分享给大家,避免…
 一个View中用到了一个CListCtrl,在OnInitialUpdate函数里面他调用了m_listCtrl.ModifyStyleEx(0, LVS_EX_FULLROWSELECT);但是结果是并没有改变View中这个ListCtrl的效果.        仔细的查阅了MSDN的关于ModifyStyleEx的说明,发现没什么可以的地方,调试几遍发现也没异常,最后在网上一搜索ModifyStyleEx,结果发现碰到这个问题的朋友还真不少,有一遍关于ModifyStyle和ModifyS…
1. 使用setupmschart.exe将MSCHRT20.OCX注册到系统: http://download.csdn.net/detail/xiaowh001/8892147 2. 在vs2010中,工具-->选择工具箱项-->COM组件-->Microsoft Chart Control , version 6.0 OLEDB 3. 新建资源中,查看工具箱,即可在最下面找到该控件. 4. 将所需的头文件拷贝到头文件目录中: http://download.csdn.net/det…
双缓冲技术主要用在画图,动画效果上,其原理就是:将资源先载入到缓冲区,然后再将缓冲区整个载入到View上面去. 双缓冲技术可以有效防止闪烁,提高显示质量. DrawView.java: package com.example.handdraw; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; import android.graphics.…