利用VC++开发ASP图像处理组件(1)

一、VC++中的DC环境及GUI有关的各种对象

在Windows中有各种图形用户界面GUI (Graphics User Interface)对象,当我们在进行绘图时就需要利用这些对象。而各种对象都 拥有各种属性,下面首先介绍几种GUI对象和拥有的属性。

(一)、GUI有关的各种对象

在Windows中有各种图形用户界面GUI(Graphics User Interface)对象,当我们在进 行绘图时就需要利用这些对象。而各种对象都拥有各种属性,下面首先介绍几种GUI对象和拥 有的属性。

字体对象CFont

字体对象CFont用于输出文字时选用不同风格和大小的字体。可选择的风格包括:是 否为斜体,是否为粗体,字体名称,是否有下划线等。

刷子CBrush对象

刷子CBrush对象决定填充区域时所采用的颜色或模板。对于一个固定色的刷子来讲它 的属性为颜色,是否采用网格和网格的类型如水平的,垂直的,交叉的等。也可以利用8*8的 位图来创建一个自定义模板的刷子,在使用这种刷子填充时系统会利用位图逐步填充区域。

画笔CPen

画笔CPen对象在画点和画线时有用。它的属性包括颜色,宽度,线的风格,如虚线, 实线,点划线等。

位图CBitmap对象

位图CBitmap对象可以包含一幅图像,可以保存在资源中。

CPalette调色板

CPalette调色板是一种颜色映射接口,它允许应用程序在不影响其他应用程序的前提 下,可以充分利用输出设备的颜色描绘能力。

此外系统中还拥有一些库存GUI对象,你可以利用CDC::SelectStockObject (SelectStockObject( int nIndex )选入这些对象,它们包括一些固定颜色的刷子,画笔和 一些基本字体。 如:

BLACK_BRUSH 黑色刷子

NULL_BRUSH 空刷子

WHITE_PEN 白色画笔

DEVICE_DEFAULT_FONT 默认字体

在Windows中使用GUI对象必须遵守一定的规则。首先需要创建一个合法的对象,不同的对 象创建方法不同。然后需要将该GUI对象选入DC中,同时保存DC中原来的GUI对象。如果选入 一个非法的对象将会引起异常。在使用完后应该恢复原来的对象,这一点特别重要,如果保 存一个临时对象在DC中,而在临时对象被销毁后可能引起异常。有一点必须注意,每一个对 象在重新创建前必须销毁,下面的代码演示了这一种安全的使用方法:

OnDraw (CDC* pDC)
{
  a) CPen pen1,pen2;
  b) pen1.CreatePen (PS_SOLID,2,RGB(128,128,128));//创建画笔对象一
  c) pen2.CreatePen (PS_SOLID,2,RGB(128,128,0));//创建画笔对象二
  d) CPen* pOldPen=(CPen*) pDC->SelectObject(&pen1);//选择对象进DC
  e) drawWithPen1...
  f)  (CPen*)pDC->SelectObject(&pen2);//选择对象进DC
  g) drawWithPen2...
  h)  pen1.DeleteObject();//再次创建前先销毁
  i) pen1.CreatePen(PS_SOLID,2,RGB(0,0,0));//再次创建对象
  j) (CPen*)pDC- >SelectObject(&pen1);//选择对象进DC
  k) drawWithPen1...
   l)  pDC->SelectObject(pOldPen);//恢复
}   

OnDraw(CDC* pDC) 函数是VC中最常见的图形输出刷新函数,参数pDC 为CDC类的一个指针,我们通过它进行画图 操作。

代码a行定义CPen 类的两个画笔对象pen1,pen2;分别在行b,c 调用CPen 类成 员函数CreatePen 创建两个实心画笔, 其颜色RGB值分别为RGB(128,128,128), RGB (128,128,0)。行d 将新创建的画笔pen1选入当前设备上下文DC环境并将旧画笔保存在 pOldPen里,这样在e行输出的图形或文本线条将以pen1的属性填充。f, g 行选入画笔二并输 出。i,j 行销毁画笔一并且创建RGB(0,0,0)色的画笔,k行输出。最后一行l行将旧画笔选入 当前DC环境,输出完毕。字体对象,刷子对象及位图对象的使用方法同上,具体使用将在下 面的实例中描述。

在绘图时都需要一个DC对象,DC(Device Context设备环境)对象 是一个抽象的作图环境,可能是对应屏幕,也可能是对应打印机或其它。这个环境是设备无 关的,所以在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全 不变。

时间: 2024-09-15 01:48:31

利用VC++开发ASP图像处理组件(1)的相关文章

利用VC++开发ASP图像处理组件(2)

三.COM组件接口设计 前面我们在输入文本后,在程序中创建设备上下文,对输入 的文本进行计算并输出了指定文件名的位图文件,在本设计中,我们使用了以JPEG压缩格式 存储文件的方式以减小网络传输时间,因jpeg压缩方法的论述已超出本文范围,故在此不再 赘述. 为了让其他语言调用此接口,我们以 COM 组件的方式发布此程序,可供 VB,DELPHI,PB,ASP等程序调用,下面给出COM组件的设计方法,一般COM组件的创建及编译超 出本文范围,故不再作解释. 在组件中清加方法: STDMETHOD(

用Delphi开发ASP分页组件

分页 由于Delphi在开发数据库应用系统中具有的强大的功能和极高的效率,所以笔者开发ASP组件较常用的是Delphi 5.0(当然也可采用Visual Basic或VC++开发ASP组件),Delphi本身在Internet和InternetExpress两个组件面板提供了众多的组件可以直接生成Web页面,但是这些组件都缺少网页中数据显示常见的分页功能.众所周知,ASP是通过建立ADO连接数据库后建立RecordSet对象,然后利用RecordSet的AbsolutePage进行页面定位,而在

利用.Net制作ASP脚本组件实现重启服务器

大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方式进行操作! 大家知道直接使用ASP是不能够重启服务器的,这时我们需要制作一个组件来实现功能,ASP通过这个组件调用系统API,然后按照不同的重启和关机方式进行操作! 下面先说COM的制作,在VB中新建一工程,当然是AceiveX dll的! 1)先修改工程属性,在工程属性窗口将工程名称改为system,在类模块窗口将模块名称改为contral,保存工程;

用Delphi 6开发ASP上传组件详解

上传|详解 文件上传是WEB开发中经常要用到的功能,但ASP本身和内置的组件都不支持文件上传功能.网上流传的一些第三方组件虽然能够解决这个问题,但大多是要收费的,更别说Open Source了.本文将详细剖析WEB文件上传的原理,以及一步步指导读者如何用Delphi6开发一个ASP上传组件. 1 Html文件分析 首先我们来看一个html文件源码,文件名是test.htm,功能是提供用户上传的界面: <html> <body> <center> <form nam

利用VC++编写Windows95的CPL组件

控制面板是Windows 95 的控制中心,通过它可以完成添加新硬件设备.改变桌面设置.配置网络协议等多项工作.在Windows 95 中,控制面板通常有20 多个组件,我们只要用鼠标双击任一组件的图标,就会弹出一个对话框,对话框包含有设置一些系统参数的选项,这些参数的绝大多数都存放在Windows 95 的注册表中. ---- 控制面板的主程序是CONTROL.EXE,它在启动时自动Winndows\System 目录下查找并调入文件扩展名为CPL 的控制面板组件.控制面板组件是可以扩充的,一

方向-关于C#,C++,asp.net,java ee,java se,vc ++ 开发的一些问题

问题描述 关于C#,C++,asp.net,java ee,java se,vc ++ 开发的一些问题 我现在大二下学期了,暂时还没有分方向的,我先在准备向c++ 方向发展 ,路线大致是这样的: c++ primer 5-> windows程序设计/ vc ++ 程序设计,做一些小程序 -> effect c++ -> more effect c++ -> windows 内核 等等,这样好吗? 以后出去好找工作吗? 我现在学习了 c++ 语言,java 语言,c语言 ,c#语言有

ASP服务器组件的编程

编程|服务器 重庆出版社电脑中心 陈刚 1.什么是ASP服务器组件 ASP(Active Server Page)是当今开发交互式Web页面.Web数据库应用最强大的技术.在其中可以混用HTML.DHTML.ActiveX.VBScript或JavaScript.当这些技术都无法奏效时(例如进行高密度的数学运算.封装特定的数据库处理逻辑等),可以使用服务器组件(Server SideComponent)进一步扩展ASP的能力.Server SideComponent实际上是运行在服务器上的一个D

在Visual J++中编写ASP COM组件

visual Java是一种以网络为中心的编程语言,许多只使用ASP脚本难以完成的任务可以用Java轻松地实现.同时,扩展ASP应用最好的方法莫过于加入COM组件.那么,可以利用Java为ASP开发组件吗?本文通过实例,说明了在Visual J++环境下开发COM组件的具体过程. 一.概述 自Java问世以来,各种开发工具.开发环境不断出现.这些环境和工具面向不同层次的用户,具有各自的优点.那么,使用Visual J++作为Java开发平台又有哪些优点呢?粗略地讲,这些优点包括: 熟悉的开发环境

第十五篇 常用的ASP ActiveX组件

当你用 ASP 编写服务器端应用程序时,必须依靠 ActiveX 组件来强大 Web 应用程序的功能,譬如:你需要连接数据库,对数据库进行在线操作等等,继上篇介绍了 AD Rotator 组件后,本篇将接着给大家介绍其它一些常用的 ASP ActiveX 组件的使用方法. 最近仍有不少朋友来信问我, ASP 是否只能在 Microsoft IIS 上运行,是否可以在非 NT 平台上运作?本来这个问题我已经回答过很多遍了 : 我只是听说过有某种可以支持的软件,却从没见过.但一些热情的朋友仍然孜孜不