MFC中设备描述表dc的使用

 1 以下代码我是在View类中实现的:
 2 /** 利用平台SDK实现画线功能
 3     // 首先获得窗口的设备描述表
 4     HDC hdc;
 5     hdc = ::GetDC( m_hWnd );  //调用的是平台SDK的成员函数
 6     // 移动到线条的起点
 7     MoveToEx( hdc, m_ptOrigin.x, m_ptOrigin.y, NULL ); // 第四个参数是一个指向Point结构体的指针,用于保存移动前鼠标的位置坐标,这里不需要这个坐标,所以设置为NULL
 8     LineTo( hdc, point.x, point.y );
 9     ::ReleaseDC( m_hWnd, hdc );
10     CView::OnLButtonUp(nFlags, point);
11     */
12 
13     /** CDC 类,利用MFC封装类实现画线功能
14     CDC* pDC = GetDC();        // 调用的是CWnd类的成员函数,View类也是从CWnd类继承的
15     pDC->MoveTo( m_ptOrigin );
16     pDC->LineTo( point );
17     ReleaseDC( pDC );
18     */
19 
20     /** 利用CDC 类的派生类 CClientDC 实现画线功能, 他在构造函数中调用GetDC,在析构时调用ReleaseDC,因此不需要显示调用
21     //CClientDC dc( this );
22     CClientDC dc( GetParent() );
23     dc.MoveTo( m_ptOrigin );
24     dc.LineTo( point );
25     */
26 
27     /**CWindowDC 也派生于CDC类
28     //CWindowDC dc( this );                 // 在客户区绘图
29     //CWindowDC dc( GetParent() );         // 可以在菜单栏和工具栏上绘图
30     CWindowDC dc( GetDesktopWindow());
31     dc.MoveTo( m_ptOrigin );
32     dc.LineTo( point );
33     */
34 
35     /** 画笔的使用
36     //CPen pen( PS_SOLID, 2, RGB(255, 0, 0) );
37     //CPen pen( PS_DASH, 1, RGB(255, 0, 0) );  //线宽必须<=1才生效
38     CPen pen( PS_DOT, 1, RGB(255, 0, 0) );
39     CClientDC dc( this );
40     CPen* pOldPen = dc.SelectObject( &pen );
41     dc.MoveTo( m_ptOrigin );
42     dc.LineTo( point );
43     dc.SelectObject( pOldPen );
44     */
45 
46     /** 颜色画刷的使用
47     CBrush brush( RGB(255, 0, 0) );
48     CClientDC dc( this );
49     dc.FillRect( CRect( m_ptOrigin, point), &brush );
50     */
51 
52     /** 位图画刷的使用
53     CBitmap bitmap;
54     bitmap.LoadBitmapW( IDB_BITMAP1 );
55     CBrush brush( &bitmap );
56     CClientDC dc( this );
57     dc.FillRect( CRect( m_ptOrigin, point ), &brush );
58     */
59 
60     /** 默认是白色画刷,会覆盖掉先前区域内图行
61     CClientDC dc( this );
62     dc.Rectangle( CRect( m_ptOrigin, point ) );  // DC 默认是白色画刷,前边画的图像会把后边的覆盖掉,所以要想办法用透明画刷
63     */
64     
65     /** 使用透明画刷
66     CClientDC dc( this );
67     // 创建一个空画刷,FromHandle方法可以将画刷句柄转换成画刷对象
68     // GetStockObject方法返回的是一个HGDIOBJECT句柄,所以要将其强制类型转化成HBRUSH类型
69     CBrush* pBrush = CBrush::FromHandle( (HBRUSH)GetStockObject( NULL_BRUSH));
70     CBrush* pOldBrush = dc.SelectObject( pBrush );
71     dc.Rectangle( CRect( m_ptOrigin, point ) );
72     dc.SelectObject( pOldBrush );
73     */

 

VB 一对一 Attribute VB_Name = "Form1" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = False Attribute VB_PredeclaredId = True Attribute VB_Exposed = False Option Explicit Dim FTempLen As Integer Dim FRegTemplate As Variant Dim FingerCount As Long Dim FMatchType As Integer Private Declare Function MessageBox Lib "user32" Alias "MessageBoxA" (ByVal hwnd As Long, ByVal lpText As String, ByVal lpCaption As String, ByVal wType As Long) As Long Private Sub cmdEnroll_Click() If Trim(TextFingerName.Text) = "" Then MessageBox 0, "请输入指纹名称标识!", "错误", 0 Exit Sub End If ZKFPEngX1.BeginEnroll StatusBar.Caption = "开始登记" End Sub Private Sub cmdIdentify_Click() If ZKFPEngX1.IsRegister Then ZKFPEngX1.CancelEnroll End If StatusBar.Caption = "开始比对(1:N)" FMatchType = 2 End Sub Private Sub cmdInit_Click() If ZKFPEngX1.InitEngine = 0 Then MessageBox 0, "初始化成功!", "提示信息", 0 StatusBar.Caption = "指纹仪连接" TextSensorCount.Text = ZKFPEngX1.SensorCount & "" TextSensorIndex.Text = ZKFPEngX1.SensorIndex & "" TextSensorSN.Text = ZKFPEngX1.SensorSN cmdInit.Enabled = False FMatchType = 0 End If End Sub Private Sub cmdReadMemory_Click() Dim i, p1 As Long, p2 As Long Dim p As Variant Dim s As String p1 = 0 p2 = 23 ZKFPEngX1.DongleMemRead p1, p2, p s = "" For i = LBound(p) To UBound(p) s = s & Chr(p(i)) Next TextRead.Text = s End Sub Private Sub cmdSaveMemory_Click() Dim p1 As Long, p2 As Long Dim p() As Byte Dim i As Integer Dim s As String p1 = 0 p2 = Len(TextWrite.Text) s = TextWrite.Text ReDim p(Len(s)) For i = 0 To Len(s) - 1 p(i) = Asc(Mid(s, i + 1)) Next ZKFPEngX1.DongleMemWrite p1, p2, p End Sub Private Sub cmdSaveImage_Click() Dim sFileName As String sFileName = "C:\Fingerprint" If OptionBmp.Value Then ZKFPEngX1.SaveBitmap sFileName & ".bmp" Else ZKFPEngX1.SaveJPG sFileName + ".jpg" End If MessageBox 0, "文件保存成功(" + sFileName + ")!", "", 0 End Sub Private Sub cmdVerify_Click() If ZKFPEngX1.IsRegister Then ZKFPEngX1.CancelEnroll End If ZKFPEngX1.BeginCapture StatusBar.Caption = "开始比对(1:1)" FMatchType = 1 End Sub Private Sub Form_Load() FingerCount = 0 End Sub Private Sub ZKFPEngX1_OnCapture(ByVal ActionResult As Boolean, ByVal ATemplate As Variant) Dim fi As Long, i As Long Dim Score As Long, ProcessNum As Long Dim RegChanged As Boolean Dim sTemp As String sTemp = ZKFPEngX1.EncodeTemplate1(ATemplate) ATemplate = ZKFPEngX1.DecodeTemplate1(sTemp) StatusBar.Caption = "取得指纹特征" If FMatchType = 1 Then '1:1 If ZKFPEngX1.VerFinger(FRegTemplate, ATemplate, False, RegChanged) Then MessageBox 0, "指纹比对成功!", "信息提示", 0 Else MessageBox 0, "指纹比对失败!", "信息提示", 0 End If 'If ZKFPEngX1.VerRegFingerFile("c:\fingerprint.tpl", ATemplate) Then ' MessageBox 0, "文件指纹比对成功!", "信息提示", 0 'Else ' MessageBox 0, "文件指纹比对失败!", "信息提示", 0 'End If End If End Sub Private Sub ZKFPEngX1_OnEnroll(ByVal ActionResult As Boolean, ByVal ATemplate As Variant) Dim i As Long If Not ActionResult Then MessageBox 0, "指纹登记失败!", "警告", 0 Else MessageBox 0, "指纹登记成功!", "信息", 0 FRegTemplate = ATemplate ZKFPEngX1.SaveTemplate "c:\fingerprint.tpl", ATemplate FingerCount = FingerCount + 1 End If End Sub Private Sub ZKFPEngX1_OnFeatureInfo(ByVal AQuality As Long) Dim sTemp As String sTemp = "" If ZKFPEngX1.IsRegister Then sTemp = "登记状态: 还需要按压" & ZKFPEngX1.EnrollIndex & "次手指!" End If sTemp = sTemp & " 指纹质量" If AQuality <> 0 Then sTemp = sTemp & "不合格: " & AQuality Else sTemp = sTemp & "合格" End If StatusBar.Caption = sTemp End Sub Private Sub ZKFPEngX1_OnImageReceived(AImageValid As Boolean) ZKFPEngX1.PrintImageAt hDC, FrameCommands.Width + 6, FrameCommands.Top, ZKFPEngX1.ImageWidth, ZKFPEngX1.ImageHeight End Sub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值