rect

C++拷贝构造函数详解

此生再无相见时 提交于 2020-01-18 03:40:58
一. 什么是拷贝构造函数 首先对于普通类型的对象来说,它们之间的复制是很简单的,例如: int a = 100 ; int b = a ; 而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。 下面看一个类对象拷贝的简单例子。 # include <iostream> using namespace std ; class CExample { private :   int a ; public : //构造函数   CExample ( int b ) { a = b ; } //一般函数   void Show ( )   { cout << a << endl ; } } ; int main ( ) {  CExample A ( 100 ) ;  CExample B = A ; //注意这里的对象初始化要调用拷贝构造函数,而非赋值   B . Show ( ) ;   return 0 ; } 运行程序,屏幕输出100。从以上代码的运行结果可以看出,系统为对象 B 分配了内存并完成了与对象 A 的复制过程。就类对象而言,相同类型的类对象是通过拷贝构造函数来完成整个复制过程的。 下面举例说明拷贝构造函数的工作过程。 # include <iostream> using namespace std ; class CExample { private :

android学习日记10--裁剪区域

跟風遠走 提交于 2020-01-17 08:04:27
裁剪区域   裁剪是画布的一个函数,区域可以是矩形和圆形,也可以通过设置 path 或Region来显示自定义区域,通过不同组合,Android几乎可以支持任意现状的裁剪区域。 android.graphics包中定义了Point, Rect, Path, Region 这几种几何形状,Path可以为有圆弧,椭圆,二次曲线,三次曲线,线段,矩形等基本几何图形或是由这些 基本几何图形组合而成,Path可以为开放或是闭合曲线。Rect提供了定义矩形的简洁方法。 1 //绘制一张背景图片,充满整个屏幕 2 Bitmap bitmap1 = BitmapFactory.decodeResource(this.getResources(), R.drawable.background); 3 4 canvas.save(); 5 // 四个参数 表示左上角的坐标和宽高 6 canvas.clipRect(0, 0, 30, 30); 7 canvas.drawBitmap(bitmap1, 0, 0, paint); 8 canvas.restore(); 9 10 11 canvas.save(); 12 Path path = new Path(); 13 // 添加一个圆形区域 14 path.addCircle(130, 130, 30, Direction.CCW); 15 //

矩形、区域和裁剪

主宰稳场 提交于 2020-01-17 08:01:29
矩形 FillRect (hdc, &rect, hBrush); 填充矩形,到达但不包括右下坐标 FrameRect (hdc, &rect, hBrush); 绘制矩形框,不填充,画刷用来绘制边框,此函数允许绘制不是纯色的矩形框,矩形边框是1个逻辑单位宽,如果逻辑单位大于设备单位,边框的宽度将是2个或更多像素。 InvertRect (hdc, &rect); 翻转矩形内所有像素,1变0 , 0变1 即白变黑,黑变白等等 操纵rect的 9 个函数 SetRect (&rect, xLeft, yTop, xRight, yBottom); 可以一次初始rect OffsetRect (&rect, x, y); 矩形沿x轴和y轴移动几个单位 InflateRect (&rect, x, y); 增大或减小矩形尺寸 SetRectEmpty (&rect); 将矩形结构的各字段设为0 CopyRect (&DestRect, &SrcRect); 复制矩形结构 IntersectRect (&DestRect, &SrcRect1, &SrcRect2); 取两个矩形的交集 UnionRect (&DestRect, &SrcRect1, &SrcRect2); 取两个矩形的并集 IsRectEmpty (&rect); 判断是否为空 PtInRect (&rect,

Android 自定义 view(三)—— onDraw 方法理解

吃可爱长大的小学妹 提交于 2020-01-16 06:42:12
前言: 上一篇已经介绍了用自己定义的属性怎么简单定义一个view《 Android 自定义view(二) —— attr 使用 》,那么接下来我们继续深究自定义view,下一步将要去简单理解自定义view的一个比较重要的方法 onDraw(Canvas canvas) ,在探究 onDraw方法之前,我们必须先深入了解两个类Paint和Canvas 。 第一:认识Paint 在探究onDraw之前首先必须要认识两个类,这里给出非常不错的两个资料参考网站,我也是从这里得到想要知道的东西,简单的说这下面几篇文章已经够我们喝一壶了,这里我就不再献丑了 http://www.apihome.cn/api/android/Paint.html http://www.cnblogs.com/aibuli/p/efef9d774df97c553a8a0c0c3495ba35.html?utm_source=tuicool&utm_medium=referral http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2014/1105/1907.html http://blog.csdn.net/harvic880925/article/details/39080931 第二:认识Canvas Canvas类简单理解就是表示一块画布

C++ Qt学习笔记(4)绘图

血红的双手。 提交于 2020-01-16 06:02:17
Qt中的二维绘图基本功能是使用Qpainter在绘图设备上进行绘图,绘图设备由QpainterDevice提供,QPaintDevice是一个二维空间的抽象,可以使用QPainter在其上进行绘制,它是所有可以进行绘制的对象的基类。QPainterDevice的子类主要有QWidget, QPixmap,QPicture,QImage,QPinter,QOpenGIPainterDevice,这些设备相当于为QPainter提供了一个画布。通过绘制一些基本的图形,如点,线,圆组成自己需要的图图件,形,得到的图形是不可交互的。 Qt中的Graphics View架构,使用QGraphicsView,QGraphicsScene,QGraphicsItem类绘图,在一个场景中可以绘制,且图件是可以交互的。 1. QPainter基本绘图: 在绘图系统中,主要通过QPainter完成具体的绘图操作,QPaintDevice是一个可以用QPainter进行绘图的抽象二维画布。QPainterEngine为QPainter提供在不同设备上进行绘图的接口,QPainterEngine类一般只在QPainter类和QPaintDevice类的内部使用,一般不需要我们去操作它。 QPainter在一个Paint Event事件函数中进行绘图,从画布(QWidget, QPixmap,

WPF 简易新手引导

拟墨画扇 提交于 2020-01-16 03:45:02
原文: WPF 简易新手引导 这两天不忙,所以,做了一个简易的新手引导小Demo。因为,不是项目上应用,所以,做的很粗糙,也就是给需要的人,一个思路而已。 新手引导功能的话,就是告诉用户,页面上操作的顺序,第一步要做什么,第二步要做什么,以此类推,然后,最终关闭新手引导页面。 以我的习惯,还是先给大家看看效果。 效果展示的很简单,就是将要告诉用户操作的控件做一个提示。 要实现这个功能化,那思路就是大概以下几项: 一、遮罩窗体 将主窗体进行遮罩,半透明的效果,常用的做遮罩的话,一般是设置一个底色,然后设置透明度,类似于这篇博客 http://blog.csdn.net/cmis7645/article/details/7781990 ,但是,在实际的操作用就会遇到问题,如果使用正常的半透明方式的话,黄色框部分,是不发透出白色的主窗体内容的,因为已经有底色了,所以,本文使用的半透明方法是Clip的擦除,效果如下图,参考的博客 http://blog.csdn.net/feitiankoulan/article/details/25201593 先设置一个透明的窗体 <Window x:Class="SimpleGuide.GuideWin" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x

MFC双缓冲解决闪烁问题

时光毁灭记忆、已成空白 提交于 2020-01-15 03:27:10
  最近在写一个图像编辑软件,环境是MFC,但是MFC的视图刷新机制使得图像闪烁得非常厉害(图像缩放时尤其明显),在网上查了一些资料,最好的方法是用双缓冲的方式显示,这里总结一下。   双缓冲的原理可以这样形象的理解:把电脑屏幕看作一块黑板。首先我们在内存环境中建立一个“虚拟“的黑板,然后在这块黑板上绘制复杂的图形,等图形全部绘制完毕的时候,再一次性的把内存中绘制好的图形“拷贝”到另一块黑板(屏幕)上。采取这种方法可以提高绘图速度,极大的改善绘图效果。 主要实现代码如下: 1 CDC MemDC; // 首先定义一个内存显示设备对象 2 CBitmap MemBitmap; // 定义一个位图对象 3 MemDC.CreateCompatibleDC(NULL); // 创建兼容设备dc 4 MemBitmap.CreateCompatibleBitmap(pDC,W,H); 5 CBitmap * pOldBit = MemDC.SelectObject( & MemBitmap); 6 MemDC.FillSolidRect( 0 , 0 ,W,H,RGB( 255 , 255 , 255 )); // 填充初始颜色 7 cimg.DrawToHDC(MemDC.GetSafeHdc(),CRect( 0 , 0 ,W,H)); // 绘图到内存显示设备 8 9 pDC ->

Android小窗口模式,picture-in-picture(PIP画中画)的使用

…衆ロ難τιáo~ 提交于 2020-01-12 23:15:59
1.介绍 Android8.0的时候推出了画中画模式,可以让Activity缩小显示在其他Activity上方。当初我维护的项目本身自己实现了这个功能,Android加入画中画之后两个功能并行,互相交互的时候出了一大堆问题。现在几乎所有的视频软件都加入了这个功能。使用方法十分简单,但是需要处理好AudioFocus的问题。 2.参数介绍 在Android 8.0时候,只需要调用Activity的 enterPictureInPictureMode() ; 或者 enterPictureInPictureModeIfPossible() 即可 public boolean enterPictureInPictureMode ( @NonNull PictureInPictureParams params ) { try { if ( params == null ) { throw new IllegalArgumentException ( "Expected non-null picture-in-picture params" ) ; } return ActivityManagerNative . getDefault ( ) . enterPictureInPictureMode ( mToken , params ) ; } catch ( RemoteException

C++ Primer Plus(第六版)第十一章课后习题

十年热恋 提交于 2020-01-11 20:46:29
C++ Primer Plus(第六版)第十一章课后习题 11.15(练习题中的11.5应为11.15,此处提供11.9.1, 11.9.2, 11.9.3需要的程序11.15) vector.h #ifndef VECTOR_H #define VECTOR_H #include namespace VECTOR { class Vector { public: enum Mode{RECT,POL}; private: double x; double y; double mag; double ang; Mode mode; void set_mag(); void set_ang(); void set_x(); void set_y(); public: Vector(); Vector(double n1,double n2,Mode form=RECT); void reset(double n1,double n2,Mode form=RECT); ~Vector(); double xval() const {return x;} double yval() const {return y;} double magval() const {return mag;} double angval() const {return ang;} void polar_mod

C#调用Win32 的API函数--User32.dll

☆樱花仙子☆ 提交于 2020-01-11 08:31:37
Win32的API函数是微软自己的东西,可以直接在C#中直接调用,在做WinForm时还是很有帮助的。有时候我们之直接调用Win32 的API,可以很高效的实现想要的效果。 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; namespace WindowsAPI { class CSharp_Win32Api { #region User32.dll 函数 /// <summary> /// 该函数检索一指定窗口的客户区域或整个屏幕的显示设备上下文环境的句柄,以后可以在GDI函数中使用该句柄来在设备上下文环境中绘图。hWnd:设备上下文环境被检索的窗口的句柄 /// </summary> [DllImport( " user32.dll " , CharSet = CharSet.Auto)] public static extern IntPtr GetDC(IntPtr hWnd); /// <summary> /// 函数释放设备上下文环境(DC)供其他应用程序使用。 /// </summary> public static extern int ReleaseDC(IntPtr