登录
首页 » VC++源码 » VC++ 版 GDI+程序设计实例源代码实例集

VC++ 版 GDI+程序设计实例源代码实例集

于 2023-07-17 发布 文件大小:3.44 MB
0 303
下载积分: 2 下载次数: 1

代码说明:

gdiplus应用实例,在网络上广泛流传的“GDI+程序设计实例源代码”中使用的是C#语言,且封装了开源对象,   源代码主要在 “Form1.cs” 中,其功能的实现形式与.Net的MSDN帮助不同。   作者对该源代码进行了移植,在VC的非 UNICODE 环境下进行了修改,主要处理:   1、提供了一个 multibyte 与 widechar 的转化类 CWideCharString    实现 char* 与 WCHAR* 的转换有许多方法,如:    a) CWideCharString(char*) 得到 WCHAR*    b) L"char* string" 得到 WCHAR*    c) 在非UNICODE环境下,CString(WCHAR*) 得到 char*   2、将原C#中的Math、Shell等对象转换为普通的VC函数,如定义了 rand_Next 等。   3、将原C#代码中的new改为VC的引用或指针,避免了在VC中对new的重载和delete的繁杂调用所带来的内存泄漏   4、定义了一组MyDrawString函数,替换原代码中的 graphics.DrawString(...),保持了原C#代码中DrawString的参数顺序和引用方式,增加了两个 _MakeA_RGB 函数   5、因为 Image::Save 要求保存的文件不得存在,而在演示中可能会反复执行Save,所以提供了 MyImageSave 函数,先判断文件是否存在,若存在则删除,然后 Save.   6、为尽可能保持原代码的风格,在 CWalkLtDemo.cpp 的 OnDraw(...) 函数中提供一个void DoGdiplusDemo(...) 函数,该函数负责向各功能演示函数中传递所需要的绘图区和Graphics实例。   7、在主菜单“查看”项下增加了“GDI+功能演示”和“当前演示的源代码”菜单,并在工具条上增加了相应按钮。   8、程序已在VC6和VC++.NET中进行了完全的测试。   本源码包中使用的 gdiplus*.h 中对 Color 和 Point 进行了重新声明,分别为:   GdiPlusColor 和 PointI   为与MSDN中的 Color 和 Point 相一致,在WalkLtDemoHelp.h中使用了 typede

下载说明:请别用迅雷下载,失败请重下,重下不扣分!

发表评论

0 个回复

  • VC++ 使用滚动条和进度条进行范围设置
    VC++ 使用滚动条和进度条进行范围设置,实现滚动条与进度条的联动,当拖动滚动条时,进度条的进度会随着滚动条的位置变化而变化,适时显示进度状态。除了水平的滚动条外,右侧是一个垂直纵向的滚动条和进度条,具有同样的功能,很好的模拟了两者的联动。   编写代码时,可以这样定义滚动条和进度条的参数:   m_crlScrollH.SetScrollRange(0,100);//设置水平滚动范围   m_crlScrollV.SetScrollRange(0,100);//设置垂直滚动范围   m_crlScrollH.SetScrollPos(0);//设置水平滚动控件初始值   m_crlScrollV.SetScrollPos(0);//设置垂直滚动控件初始值   m_ctlProgressH.SetRange(0,100);//设置水平进度条的范围   m_ctlProgressV.SetRange(0,100);//设置垂直进度条的范围   m_ctlProgressH.SetPos(0);//设置水平进度条的初始位置   m_ctlProgressV.SetPos(0);//设置垂直进度条的初始位置   以上代码并不是完整的,完整代码请下载源码包。
    2022-04-27 16:24:44下载
    积分:1
  • VC++ 实现定制打印页的页眉和页脚
    VC++ 实现定制打印页的页眉和页脚,除了自定义打印页脚和页眉外,还可根据每页显示行数,设置打印页数,并且在需要时,屏蔽默认函数对OnDraw的调用。打印方面的定制,可参考以下代码:   void CMultiPrint2View::PrintHeader(CDC *pDC)//定制页眉   {   pDC->TextOut(0,0,"设置打印页眉和页脚测试:来首诗吧:再别康桥");   }   void CMultiPrint2View::PrintFooter(CDC *pDC)//定制页角   {   CMultiPrint2Doc* pDoc = GetDocument();//获取文档指针   ASSERT_VALID(pDoc);   CString str;   CPoint point(0,-1440*10-1000);   str.Format("当前文档:%s",(LPCSTR)pDoc->GetTitle());//获取当前文档名   pDC->TextOut(point.x,point.y,str);   str.Format("第%d页,共%d页",m_nPage,(pDoc->m_stringArray.GetUpperBound()/pDoc->m_LinePerPage+1));   CSize size=pDC->GetTextExtent(str);//获取输出文本宽度   point.x+=1440*6+1600-size.cx;   pDC->TextOut(point.x,point.y,str);   }完整的代码请下载源码吧。
    2022-07-05 00:30:40下载
    积分:1
  • VC++ 6.0 改变视图窗口的背景色
    VC++ 改变视图窗口的背景色,在窗口的显示区自定义颜色,有兴趣可参考以下代码:   void CFaceControl1View::OnChageviewbk() //改变背景色   {    m_rgbBack=RGB(0,128,128);    Invalidate(true);   }   BOOL CFaceControl1View::OnEraseBkgnd(CDC* pDC)   {    CBrush Brush (m_rgbBack);// 创建一个新的刷子    CBrush* pOldBrush = pDC->SelectObject (&Brush);// 把刷子选入设备环境    //获得需要檫除背景的区域    CRect reClip;    GetClientRect(&reClip);    //重绘该区域    pDC->PatBlt(reClip.left , reClip.top , reClip.Width () , reClip.Height() , PATCOPY);    //释放刷子    pDC->SelectObject (pOldBrush);    return TRUE;//必须返回TURE   }
    2022-08-04 05:28:13下载
    积分:1
  • VC 向加密狗中写入数据
    VC 向加密狗中写入数据,与加密狗相关的例子。   DogAddr = 10; //设置起始地址   DogBytes = m_Data.GetLength(); //设置数据的长度   DogData = m_Data.GetBuffer(0); //设置写入的数据   if (WriteDog()==0)   MessageBox("数据写入成功");
    2022-07-14 23:43:14下载
    积分:1
  • 2种方案的VC++ 界面换肤模块
    一个挺有用的VC++ 界面换肤模块,里面包括了了两种换肤方案,“方案一”文件夹中实现的是加载皮肤文件实现界面换肤,“方案二”文件夹中实现的是加载组件库实现界面换肤。   加载皮肤文件实现界面换肤:选择“界面修改”/“加载界面文件”命令,在打开的窗口中选择皮肤文件(.ski),即可更换界面皮肤.   另外还有加载组件库实现界面换肤,使用的是WndDll.dll,请下载源码具体测试吧。   加载窗体皮肤文件要注意:窗体各部分位图资源:   0,1,2: 分别为标题栏的左中右3部分   3,4,5: 分别为左,下,右边框   6,7,8,9,10,11: 为标题栏普通按钮和热点按钮   12,13: 表示左下角和右下角位图   14: 表示背景位图
    2022-03-23 09:54:11下载
    积分:1
  • VC++ 使用WinInet通过HTTP协议读取网上文件
    VC++ 6.0 使用WinInet通过HTTP协议读取网上文件   在一个按钮事件中定义了网络连接Session:   CInternetSession httpsession;//定义网络连接Session   CString Line;   CInternetFile* webfile=NULL;//定义一个文件对象指针   UpdateData();   if(m_Url.Left(7)!="http://")//如果地址不含HTTP类型标志则添加本地文件类型标志   读出文件前一部分,如果文件多于80行,三示例中只显示前80行.然后更新显示文件:   UpdateData(FALSE);//更新显示文件   delete webfile;//删除文件   GetDlgItem (IDC_SHOW)->EnableWindow (FALSE);//禁用显示按钮   httpsession.Close();//关闭连接
    2023-09-07 18:35:03下载
    积分:1
  • VC++ gethostbyname获取主机名和IP地址
    VC++ 获取主机名和IP地址,也就是根据主机名获得IP地址,使用了gethostbyname函数,然后再使用addr.Format格式化获取到IP地址。具体来看以下代码获取到IP地址:   // 获得主机ip地址   struct hostent * phost;   phost = gethostbyname(szhostname);//根据主机名获得IP地址    m_strName=szhostname;   int h_length=4;   for( int j = 0; j  {    CString addr;    if( j > 0 )    str += ".";    addr.Format("%u", (unsigned int)((unsigned char*)phost->h_addr_list[0])[j]);    str += addr;   }   m_strIP=str;
    2022-11-09 11:50:03下载
    积分:1
  • VC++ 字体处理:创建4种类型的字体
    VC++ 字体处理:创建4种类型的字体,第一种方法:使用CreateFontIndirect创建字体,第二种方法:使用CreateFont创建字体;第三种方法:使用CreatePointFontIndirect创建字体;第四种方法: 使用CreatePointFont创建字体;
    2022-03-24 01:42:11下载
    积分:1
  • VC6.0合并结果集进行查询的方法演示
    VC6.0合并结果集进行查询的方法源码演示,合并多个数据集的查询,具体到本例子中,就是合并人员表和学生信息表中编号,姓名,年龄字段的结果,然后再进行需要的查询,查询结果绑定在DataGridView控件中显示。   本例需要配合SQLSERVER数据库,需要自行准备测试数据库,并附加和连接好。调试界面如截图所示。
    2023-04-29 06:35:03下载
    积分:1
  • VC++6.0 执行数据库事务的范例
    在VC++6.0程序中执行数据库事务的一个范例,是一个数据库的高级应用例子,关于设置ADO控件,方法如下:   (1)在程序中选择ResourceView视图,打开“Dialog”节点下的“IDD_AFFAIR_DIALOG”对话框资源,右键单击ADO Data控件,在弹出的菜单中选择Properties菜单项,选择通用选项卡,单击“生成”按钮,在连接选项卡中单击“…”按钮,打开当前文件夹中的Access数据库,单击“测试连接”按钮,单击“确定”按钮。   (2)右键单击DataGrid控件,在弹出的菜单中选择Properties菜单项,选择All选项卡,在DataSource项对应的Value值中重新选择IDC ADODC1项。   
    2022-07-23 05:48:05下载
    积分:1
  • 696516资源总数
  • 106914会员总数
  • 0今日下载