-
Notifications
You must be signed in to change notification settings - Fork 10
/
GraphicImage.ctl
91 lines (68 loc) · 2.51 KB
/
GraphicImage.ctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
VERSION 5.00
Begin VB.UserControl GraphicImage
AutoRedraw = -1 'True
ClientHeight = 3600
ClientLeft = 0
ClientTop = 0
ClientWidth = 4800
ScaleHeight = 240
ScaleMode = 3 'Pixel
ScaleWidth = 320
End
Attribute VB_Name = "GraphicImage"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Option Explicit
Private m_graphics As GDIPGraphics
Private m_graphicsImage As GDIPGraphics
Private m_currentBitmap As GDIPBitmap
Private m_thisImage As GDIPImage
Public Property Let Image(ByRef newImage As GDIPImage)
Set m_thisImage = newImage
UserControl.Width = m_thisImage.Width * Screen.TwipsPerPixelX
UserControl.Height = m_thisImage.Height * Screen.TwipsPerPixelY
DrawSomething
End Property
Private Function DrawSomething()
m_graphicsImage.Clear
m_graphicsImage.DrawImage m_thisImage, 0, 0, m_thisImage.Width, m_thisImage.Height
RefreshHDC
End Function
Function DrawImageStretchRect(ByRef Image As GDIPImage, ByRef destRect As RECTL, ByRef sourceRect As RECTL)
m_graphicsImage.DrawImageStretchAttrF Image, _
RECTLtoF(destRect), _
sourceRect.Left, sourceRect.Top, sourceRect.Width, sourceRect.Height, UnitPixel, 0, 0, 0
End Function
Private Function InitializeGraphics()
Set m_graphics = New GDIPGraphics
m_graphics.FromHDC UserControl.hdc
m_graphics.SmoothingMode = SmoothingModeHighQuality
m_graphics.InterpolationMode = InterpolationModeHighQualityBicubic
End Function
Private Sub UserControl_Initialize()
InitializeGDIIfNotInitialized
Set m_graphics = New GDIPGraphics
Set m_graphicsImage = New GDIPGraphics
Set m_currentBitmap = New GDIPBitmap
Set m_thisImage = New GDIPImage
InitializeGraphics
End Sub
Private Sub UserControl_Resize()
If InIDE Then Exit Sub
m_currentBitmap.CreateFromSizeFormat UserControl.ScaleWidth, UserControl.ScaleHeight, PixelFormat.Format32bppArgb
m_graphicsImage.FromImage m_currentBitmap.Image
InitializeGraphics
DrawSomething
'UserControl.width = m_tickedCheckBox.width * Screen.TwipsPerPixelX
'UserControl.height = m_tickedCheckBox.height * Screen.TwipsPerPixelY
End Sub
Private Sub RefreshHDC()
On Error GoTo Handler
If m_graphics Is Nothing Then Exit Sub
m_graphics.Clear
m_graphics.DrawImage m_currentBitmap.Image, 0, 0, UserControl.ScaleWidth, UserControl.ScaleHeight
Handler:
UserControl.Refresh
End Sub