您现在的位置:中国下载站学院中心网络编程Visual C++教程Visual C++入门教程 → 文章列表

一个生成公章图片的简易工具

作者:佚名  来源:不详  发布时间:2007-3-27 17:29:44   

减小字体 增大字体

 
 

本文示例源代码下载

  本例的运行结果图如下

  一、功能与原理

  学习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)创建位图

[责任编辑:cndownzcom]

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) 重绘picturevoid CMakeSealDlg::UpdateShow()
{
    //删除过期的图形
    m_pBitmap.DeleteObject();
    //创建新的图形
       CreateBmp(&m_pBitmap);
    //在picture控件中显示位图
    m_picture.SetBitmap((HBITMAP)m_pBitmap.Detach());
}
(三)、保存位图文件详细见源文件,网上有很多详细的介绍,也可以参看MSDN,这里就不多讲了。

  三、总结   

  这是我用VC做的第一个小程序,中间难免会有一些错误,另外保存图片的类型还没有完善,感兴趣的朋友也可继续扩展。总的来说,这个程序在逻辑字体、Spin控件、位图的应用上做了一个总体的概括,比较适合像我这样的新手借鉴学习。赫赫,有什么问题也可以给我来信联系 。

[责任编辑:cndownzcom]

[上一页][1][2]

在百度中搜索更多一个生成公章图片的简易工具相关网页 转贴于:中国下载站

  • 上一篇文章:IP Messenger 详细分析
  • 下一篇文章:QQ 静态截图程序模拟实现
  • 阅读统计:[]
  • 中国下载站】【设为主页】【收藏本页】【打印本文】【回到顶部】【关闭此页

    相关文章
    文章评论(评论内容只代表网友观点,与本站立场无关!)

    用户名: 查看更多评论

    分 值:100分 85分 70分 55分 40分 25分 10分 0分

    内 容:

             (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码


    设为首页 - 关于我们 - 广告服务 - 网站地图 - 加入收藏 - 网站声明 - 网站帮助 - 友情链接

    • Copyright (C) 2006-2008 www.cndownz.com All Rights Reserved.
      中国下载站 版权所有. 粤ICP备05141802号. 对本站有任何建议、意见或投诉,请来信:cndownzcom@yahoo.com.cn.
      喜欢中国下载站(cndownz.com),请把中国下载站(cndownz.com)告诉你QQ上的5位好友,多谢支持!