随笔 - 1  文章 - 1218  评论 - 155  阅读 - 516万

文章分类 -  GDI/GDI+

1 2 下一页
呵呵,学习学习图像入门东西
Word字体与像素的对应关系
摘要:英文字体的1磅(pt),相当于1/72 英寸(inch),约等于1/2.8mm。12PT的字打印出来约为4.2mm。网页中12px的字才相当于12像素。 虽然 四号=(14/72)*96=18.6px 更接近 19px,但是因为 18px 是点阵,所以系统还是优先显示点阵字号的。换句话说:四号=18px中文字号VS英文字号(磅)VS像素值的对应关系:八号=5磅(5pt) ==(5/72)*96=6.67 =6px七号=5.5磅 ==(5.5/72)*96=7.3 =7px小六=6.5磅 ==(6.5/72)*96=8.67 =8px六号=7.5磅 ==(7.5/72)*96=10px小五=9磅 阅读全文
posted @ 2013-10-22 10:39 carekee 阅读(741) 评论(0) 推荐(0) 编辑
vc++字体类CFont详解及用法实例《转》
摘要:CFont详解: Windows提供了多种与设备无关的不同尺寸的字体。有效地使用这些Windows字体,不用在编程时下很大功夫,就可以明显地增强各种应用程序的功能。字体是WindowsGDI必要的组成部分,这意味字体的使用与其他GDI对象一样。它们可以缩放和剪切,可以像选取画笔或者画刷一样选取设备环境。所有关于撤消选中和删除的GDI规则都适用于字体。字体由CFont类进行管理,创建CFont类必须使用CFont类的成员函数,这点与CPen和CBrush有所不同。1.CFont提供的创建字体的成员函数利用CFont创建字体的方法有两种,它们是:(1)BOOLCreateFontIndirect( 阅读全文
posted @ 2013-05-02 10:39 carekee 阅读(1571) 评论(0) 推荐(0) 编辑
win32画线考虑去锯齿(转)
摘要:这几天一直在研究win32 SDk下画线去锯齿,之前一直用的QT的画线接口函数,里面有去锯齿的效果,可是突然项目要求不能用QT的只能用win32 SDK下的GDI画线接口函数,可是显示的效果有锯齿,怎么办?只能研究下怎么去锯齿影响,因为GDI下没有去锯齿的处理,所以只能自己找算法处理。在网上找了一下http://www.codeproject.com/KB/GDI/CTGraphics.aspxhttp://www.codeproject.com/KB/GDI/AntiAliasing.aspxhttp://www.codeproject.com/KB/GDI-plus/AntiAliasin 阅读全文
posted @ 2013-04-16 13:27 carekee 阅读(1159) 评论(0) 推荐(0) 编辑
双缓存 GDI 与 GDI+混用出现的问题(转)
摘要:前几天写一个DirectUIDraw部分, 有一段编码的思路是这样的: 为了防止闪烁采用双缓存后hMemDC, 为了方便绘制png图标, 采用GDI+, 简单的绘制都是GDI绘制的, 为了更有效利用hMemDC, 每次生成hMemDC生成的位图是Clipbox大小的, 在SetViewportorgex调整视窗坐标, 在绘制对象过程中, 通过RectVisible判断是否可进行绘制, 开始用用bmp皮肤的时候(此时没有必要使用GDI+) 绘制效率很高, 而且没有任何bug, 但采用了GDI+之后, 总是有绘制不到的地方, 尤其是反复invalidaterect效果更差, 后来发现问题出现的原因 阅读全文
posted @ 2012-03-21 09:25 carekee 阅读(901) 评论(0) 推荐(0) 编辑
GDI文字旋转90度
摘要:CFont* pFont = pDC->GetCurrentFont(); LOGFONT logFont ; pFont->GetLogFont(&logFont); logFont.lfEscapement = 900 ;//900/10 = 90 HFONT hFont = CreateFontIndirect(&logFont); pDC->SelectObject(hFont); pDC->TextOut(200,200,"VC中如何把一串文字旋转90度显示的?"); 阅读全文
posted @ 2012-02-01 15:14 carekee 阅读(690) 评论(0) 推荐(0) 编辑
GDI+ 文字操作
摘要:一、投影文字 private void Form1_Paint(object sender, PaintEventArgs e) { //投影文字 Graphics g = this.CreateGraphics(); //设置文本输出质量 g.TextRenderingHint = TextRenderingHint.ClearTypeGridFit; g.SmoothingMode = SmoothingMode.AntiAlias; Fon... 阅读全文
posted @ 2012-02-01 15:09 carekee 阅读(1134) 评论(0) 推荐(0) 编辑
GDI绘图和CDC类
摘要:学习MFC过程中从书中提炼出来的表格,方便使用。设备描述表属性、GDI画笔和CPen类、GDI画刷和CBrush类、主要的GDI颜色、CDC文本函数、GDI文本对齐方式、常用设备对象。设备描述表属性当使用CDC输出函数在屏幕画图时,输出的某些特性并没有在函数调用过程中规定,但可以通过设备描述表自身获得。如果想忽略背景颜色,可将背景模式设置为“transparent”。Attribute Default Set with Get with文本颜色 Black CDC::SetTextColor CDC::GetTextColor背景颜色 White CDC::SetBkColor ... 阅读全文
posted @ 2012-02-01 15:02 carekee 阅读(1416) 评论(0) 推荐(0) 编辑
使用GDI绘制带箭头的直线
摘要:int DrawArrowLine(HDC hDC, LPPOINT lpPointStart, LPPOINT lpPointEnd, double nArrowBorderLen, double xAngleInRadians, COLORREF cr){const double PI = 3.1415926;double xAngleLine = 0;if (lpPointStart->x == lpPointEnd->x)xAngleLine = PI / 2;else{xAngleLine = atan((double(lpPointEnd->y) - double 阅读全文
posted @ 2012-02-01 14:53 carekee 阅读(2485) 评论(0) 推荐(0) 编辑
使用GDI+绘制高质量图和字体
摘要:对于GDI+,在正常的操作,Bitmap-- Graphcis -- DrawImage或者DrawString,生成图片的话,会产生很多杂点,或者是图片质量不稳定..尤其是在读取图片后,生成缩略图之后,文件会被压缩而失真..主要原因是因为没有重新设置Graphics的几个属性..1.Graphics.SmoothingMode属性: 例如SmoothingMode.HighQuality可以产生高质量图片,但是效率低.2.Graphics.CompositingQuality 属性: 例如:CompositingQuality.HighQuality也是产生高质量图,效率低下.3.Graph 阅读全文
posted @ 2011-10-21 17:24 carekee 阅读(739) 评论(0) 推荐(0) 编辑
使用GDI+绘制高质量图和字体(2)
摘要:还记得前段时间的一篇文章写了"使用GDI+绘制高质量图和字体",里面用到了SmoothingMode.HighQuality,CompositingQuality.HighQuality,TextRenderingHint.ClearTypeGridFit等属性,使得生成的图片质量有所提高..但是上周在单位的"web大头贴"里生成图片的时候,遇到了一个小问题,就是在生成Jpeg图片的时候,默认的质量有模糊的效果,无论如何调整属性都是无法达到满意的效果..查了MSDN.找到解决的办法,并且还发现了块新的桃源胜地.. 问题的地点经过筛选,确定是出在图片保存时 阅读全文
posted @ 2011-10-21 17:24 carekee 阅读(532) 评论(0) 推荐(0) 编辑
在C#用GDI+实现图形图像的任意变形效果
摘要:如何实现类似PHOTOSHOP中的图像任意变形效果,目前GDI+可以轻松实现由长方形变成任意平行四边形,但无法轻意解决变成梯形、三角形和任意四边形。例如下例:扭曲变形效果之一:扭曲变形效果之二:在下一代操作系统Vista中, 图形图像通过WPF的三维映射相应方式可以解决此问题(见我的一篇文章:在Expression Blend中制作侧面为梯形的类棱柱体),但有没有更直接的算法来解决此问题呢?经过搜索,在网上找到一篇论文:彩色图象的二维变形(作者:向辉) 摘 要 该文讨论了彩色图像的变形扭曲技术,并针对二维变形给出了一个速度、精度均令人满意的算法。 关键词 变形 反变换 双线性插值 增量计算一、 阅读全文
posted @ 2011-10-21 17:13 carekee 阅读(6086) 评论(0) 推荐(1) 编辑
如何使用Win32中新增的GDI对象——路径(转)
摘要:路径是Win32中新增的一个GDI对象,下面先从概念上谈起。 1 路径的概念 在Windows 95/NT 这样的Win32操作系统中,除了已有的位图,画笔,画刷,字体,调色板和区域之外,还增加了一个新的GDI对象:路径。路径是可以被填充,画出轮廓或同时被画出轮廓并填充的一个或多个图形。路径的引入,大大地丰富了Windows的图形功能,使得应用程序可以方便地建立复杂区域,绘制和填充不规则图形。这里说的不规则图形是指由直线和贝塞尔曲线组成的图形(相对于矩形,多边形,椭圆等规则图形)。 2 路径的使用 与其它原有的GDI对象不同的是,MFC类库没有专门用一个C++类来封装路径对象(或许在以后的版本 阅读全文
posted @ 2011-10-12 09:07 carekee 阅读(1073) 评论(0) 推荐(0) 编辑
保存 CBitmap(二值图) 转
摘要:int Cjpeg2View:: SaveBitmapToFile(CBitmap *bitmap,LPSTR lpFileName) //hBitmap 为刚才的屏幕位图句柄 lpFileName 为位图文件名 { HBITMAP hBitmap; HDC hDC; //设备描述表 int iBits; //当前显示分辨率下每个像素所占字节数 WORD wBitCount; //位图中每个像素所占字节数 DWORD dwPaletteSize=0, dwBmBitsSize, dwDIBSize, dwWritten; //定义调色板大小, 位图中像素字节大小 ,位图文件大小 , 写入文件字 阅读全文
posted @ 2011-09-29 17:25 carekee 阅读(708) 评论(0) 推荐(0) 编辑
CImage类使用初探
摘要:前两天有个朋友让我帮他编一个图象处理方面的程序,需要支持目前常见的图像格式.这可把我难住了.一直以来都只会用Visual C++的CBitmap类加载各种位图资源,然后处理.Visual C++的CBitmap类的功能是比较弱的,它只能显示出在资源中的图标、位图、光标以及图元文件的内容,而不像VB中的Image控件可以显示出绝大多数的外部图像文件(BMP、GIF、JPEG等)。如果想要在对话框或其他窗口中显示外部图像文件则只能借助于第三方提供的控件或代码,未免过于繁琐. 这阵子在学C#,装了visual studio2003.索性在网上找了一下,竟然发现.net引入了一个功能非常强大的新类 . 阅读全文
posted @ 2011-09-27 10:53 carekee 阅读(870) 评论(0) 推荐(0) 编辑
ATL::CImage 的透明通道的处理与格式转换
摘要:ATL::CImage 的透明通道的处理与格式转换1、透明通道的处理:在 CImage 的处理中,(其实就是 Windows 中的位图处理)一切的绘图函数都不修改透明通道的值,即使你进行 TransparentBlt 调用(关于该函数很有意思,在不包含透明通道的位图处理中,进行透明色的过滤处理,否则直接复制透明通道到目标DC),或者你使用 AlpahBlend ,更是直接对 RGB 三原色进行混合运算,而不会对透明通道进行任何的处理,换句话说,在32位的 RGBA 格式位图中,所有的 GDI 函数都是将位图当做 RGBX 格式进行处理的;因此创建一个包含透明通道的32位位图,进行绘图,然后保存 阅读全文
posted @ 2011-09-27 10:52 carekee 阅读(1001) 评论(0) 推荐(0) 编辑
VC6如何使用VS2005中的CImage类功能
摘要:VC6如何使用VS2005中的CImage类功能 由于VC6启动速度快,产生的执行代码小,还有可爱的类向导,所以许多C++程序员还工作在VC6环境中。 但是我们想在VC6中用VS2005中的新功能怎么办呢?例如CImage类(有很强的图像处理功能).当然我们无法直接使用CImage了,经过我的思考和实践,以下方法是可行的: 用VS2005生成一个CImage2005动态库,然后用VC6调用就可以了。DLL主要代码如下://Image2005.h#pragma onceclass AFX_EXT_CLASS CImage2005//导出整个类{private:void *m_pImage... 阅读全文
posted @ 2011-09-27 10:51 carekee 阅读(1341) 评论(0) 推荐(0) 编辑
保存MFC的HBITMAP、CBitmap对象中的图象到一个BMP文件中(转)
摘要:BOOL CTESTPICVIEWDlg::SaveBmp(HBITMAP hBitmap, CString FileName) //FileName包括路径和文件的全名//hBitmap=(HBITMAP )bm.GetSafeHandle(); CBitmap bm;{ //设备描述表 HDC hDC; //当前分辨率下每象素所占字节数 int iBits; //位图中每象素所占字节数 WORD wBitCount; //定义调色板大小, 位图中像素字节大小 ,位图文件大小 , 写入文件字节数 DWORD dwPaletteSize=0, dwBmBitsSize=0, dwDIBSize 阅读全文
posted @ 2011-09-20 16:58 carekee 阅读(1723) 评论(0) 推荐(0) 编辑
基于VC.NET的GDI+图像处理(转)
摘要:我们知道,在以往的图像处理中,常常要根据不同图像文件的格式及其数据存储结构在不同格式中进行转换。某个图像文件的显示也是依靠对文件数据结构的剖析,然后读取相关图像数据而实现的。现在,GDI+提供了Image和Bitmap类使我们能轻松容易地处理图像。概述 GDI+支持大多数流行的图像文件格式,如BMP、GIF、JPEG、TIFF和PNG等。下面先来介绍这些图像文件,然后再说明Image和Bitmap类支持的特性。 1.图像文件格式简介 图像文件是描绘一幅图像的计算机磁盘文件,其文件格式不下数十种。这里仅介绍BMP、GIF、JPEG、TIFF和PNG等图像文件格式。 BMP文件格式 B... 阅读全文
posted @ 2011-09-19 10:36 carekee 阅读(510) 评论(0) 推荐(1) 编辑
图片镂空算法集合[图](转)
摘要:在开发界面及棋牌游戏过程中,需要很多镂空的图片,而且图片形式一般比较固定.所以封装了几种常见的镂空方法.1. 用于没有掩码图,只有指定透明色,不进行伸缩voidDrawTransBitmap(HDChdcDest, //目标DC intnXOriginDest,//目标X偏移intnYOriginDest,//目标Y偏移 intnWidthDest, //目标宽度 intnHeightDest,//目标高度HDChdcSrc, //源DC intnXOriginSrc,//源X起点intnYOriginSrc, //源Y起点COLORREF crTransparent//透明色,COLORRE 阅读全文
posted @ 2011-09-16 17:23 carekee 阅读(1231) 评论(1) 推荐(1) 编辑
GDI和GDI+对象的相互转换(转)
摘要:一、CDC到Graphics只要这样:Graphics g(pDC->GetSafeHdc());//只要能构造CDC句柄的MFC对象都可以 //CClientDC、CPaintDC,也都可以二、CBitmap到Graphics需要创建一个内存位图设备:CDC MemDC;CBitmap MemBitmap;MemDC.CreateCompatibleDC(pDC);MemBitmap.CreateCompatibleBitmap(pDC,size.cx, size.cy);CBitmap *pOldBit=MemDC.SelectObject(MemBitmap);Graphics g 阅读全文
posted @ 2011-09-16 09:51 carekee 阅读(1019) 评论(0) 推荐(0) 编辑

1 2 下一页
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

点击右上角即可分享
微信分享提示