一个生成公章图片地简易工具
来源:互联网 发布:淘宝睡衣评价50字好评 编辑:程序博客网 时间:2024/04/28 02:27
本例的运行结果图如下
一、功能与原理
学习VC也没多久,将我做的这个小工具和大家分享一下。其主要功能就是可以自定义生成公章图形并保存为bmp图片,希望对大家有点用。具体实现的方法如下:
步骤一:生成对话框工程,并加入相应的控件,图片的显示使用Picture控件;
步骤二:定义生成图形所需要的参数;
步骤三:通过参数定义,生成对应的Bitmap,再在Picture控件中显示该位图,具体实现参看源程序。
步骤四:将生成的Bitmap保存为位图文件。
二、程序实现的关键点
(一)、需要对LOGFONT、LOGPEN和LOGBRUSH结构很了解,并能灵活应用,特别是在排列字体的过程中,对字体的旋转角度以及定位点的设置。
//绘制图章基本图形void CMakeSealDlg::DrawSeal(CDC * MemDC){ int cx = 100; int cy = 100; POINT point; point.x = point.y = 5; LOGPEN logPen; logPen.lopnColor = ChooseColor(&m_nRadioColor); //绘制背景 logPen.lopnStyle = PS_NULL; logPen.lopnWidth = point; (*MemDC).SelectObject(CreatePenIndirect(&logPen)); (*MemDC).Rectangle(0,0,200,200); //设置绘笔 logPen.lopnStyle = PS_SOLID; (*MemDC).SelectObject(CreatePenIndirect(&logPen)); //设置填充 LOGBRUSH logBrush; logBrush.lbStyle = BS_HOLLOW; logBrush.lbColor = RGB(255, 0, 0); (*MemDC).SelectObject(CreateBrushIndirect(&logBrush)); //绘制外圆 (*MemDC).Ellipse(cx - m_nRadius, cy - m_nRadius, cx + m_nRadius, cy + m_nRadius);}(二)、在显示预览时,通过使用 Picture 控件对内存中Bitmap的调用,可有效地防止因重绘造成的屏幕闪烁。
(1)创建位图
void CMakeSealDlg::CreateBmp(CBitmap *bitmap){ CClientDC dc(this); //设置内存中CDC CDC MemDC; //创建相容的Bitmap和DC bitmap->CreateCompatibleBitmap(&dc, 198, 198); MemDC.CreateCompatibleDC(&dc); MemDC.SelectObject(bitmap); //在内存DC中绘制图章 DrawSeal(&MemDC); DrawSealText(&MemDC); DrawSubText1(&MemDC); DrawSubText2(&MemDC); //判断是否绘制五角星 if(m_bShowTri) { DrawTri(&MemDC); } //将创建图片保存在内存中 MemDC.SelectObject(bitmap); MemDC.DeleteDC();}(2)改变参数调用重绘函数
//改变主字体宽度void CMakeSealDlg::OnChangeMainWidth() { UpdateData(TRUE); CSpinButtonCtrl*pSpin= (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_MAIN_WIDTH); pSpin->SetPos(m_nMainWidth); UpdateShow( );}(3) 重绘picture
void CMakeSealDlg::UpdateShow(){ //删除过期的图形 m_pBitmap.DeleteObject(); //创建新的图形 CreateBmp(&m_pBitmap); //在picture控件中显示位图 m_picture.SetBitmap((HBITMAP)m_pBitmap.Detach());}(三)、保存位图文件详细见源文件,网上有很多详细的介绍,也可以参看MSDN,这里就不多讲了。
三、总结
这是我用VC做的第一个小程序,中间难免会有一些错误,另外保存图片的类型还没有完善,感兴趣的朋友也可继续扩展。总的来说,这个程序在逻辑字体、Spin控件、位图的应用上做了一个总体的概括,比较适合像我这样的新手借鉴学习。赫赫,有什么问题也可以给我来信联系 。
- 一个生成公章图片地简易工具
- 一个生成公章图片的简易工具
- 一个简易的9 patch图片解码工具
- Java使用Graphics2D生成公章
- Java使用Graphics2D生成公章
- JavaFX示例--简易图片处理工具
- JavaFX示例--简易图片处理工具
- php 简易的一个 验证码 生成
- 一个简易android弹幕生成代码
- 一个简易的正则表达式测试工具
- 一个图片打包工具
- 一个仿qq 简易图片选择器
- 手把手搭建一个简易的图片文件服务器
- 图片压缩生成bitmap工具
- 一个开源的从图片生成文本描述的工具:NeuralTalk
- 简易数据库代码生成工具 V1.0 发布
- 推荐一个图片编辑工具
- 一个图片处理工具类
- 复整数乘法的计算方法
- .NET+Ajax 实现站内搜索
- .Net下进程外COM服务器的实现
- 子集枚举问题求解-Prolog
- Linux下的IP配置
- 一个生成公章图片地简易工具
- Silverlight 1.1 正式更名为 Silverlight 2.0
- aabbcc本质不同的排列数
- 完成一个能模拟简略猜扑克牌大小地 Win32 控制台游戏
- 集合及其运算-prolog
- css网站
- 如何在一个类中定义一个Friend类型的成员函数
- 射击问题求解程序-Prolog
- C++类对象的拷贝构造函数