程式設計實習

Download Report

Transcript 程式設計實習

程式設計實習
繪圖-影像貼圖
將圖檔載入Bitmap物件(一)
方法一:宣告時同時載入圖檔
語法:
Dim 物件名稱 As New Bitmap(“圖檔路徑” )
Dim Bmp As New Bitmap(“C:\X.BMP”)
將圖檔載入到記憶體中並將此區域命名為Bmp
將圖檔載入Bitmap物件(二)
方法二:先宣告Bitmap空間需要時再載入圖檔
語法:
Dim 物件名稱 As Bitmap ………先宣告
Bitmap名稱=New Bitmap(圖檔名)…程式中再指定
Dim BmpSrc As Bitmap
BmpSrc=New BitMap(“Src.Bmp”)
在畫布上貼圖
語法:
Graphics名稱.DrawImage(Bitmap名稱,x,y)
Dim DrawView As Graphics
.
.
DrawView=Graphics.FromImage(BmpView)
DrawView.DrawImage(BmpView,0,0)
圖檔載入構想
步驟一:
以 Bmp名稱=New Bitmap(“檔名”)載入
繪圖區
圖檔
記憶體繪圖區
BmpSrc
步驟二:
用DrawImage的方法將載入
的圖形貼到工作區
記憶體繪圖區
BmpView
步驟三:
將BmpView顯示在圖片盒上
記憶體
圖檔載入範例(一)
Dim BmpSrc,BmpView As Bitmap
Dim DrawView as Graphics
Private Sub Form_Load(ByVal…
BmpSrc=New Bitmap(“View.bmp”)
‘先將圖片載入記憶體
BmpView=New Bitmap(BmpSrc.Width,BmpSrc.Height) ‘指定目標畫布大小
DrawView=Graphics.FromImage(BmpView) ‘將繪圖工具指定給畫布
End Sub
Private Sub Button1_Click(ByVal ….
DrawView.DrawImage(BmpSrc,0,0) ‘將來源圖片貼到畫布上
picView.Image=BmpView
‘將畫布顯示出來
End Sub
圖檔載入範例(二)-捲動
表單配置
水平捲動軸:
可用捲動的方式設定
數值,主要常用的屬
性為:
Maximum:設定最大值
Minimum:設定最小值
LargeChange:設定變動量
Value:捲軸值
水平捲動軸
圖檔載入範例(二)-捲動
Dim BmpSrc,BmpView As Bitmap
Dim DrawView as Graphics
Private Sub Form_Load(ByVal…
BmpSrc=New Bitmap(“View.bmp”)
‘先將圖片載入記憶體
BmpView=New Bitmap(BmpSrc.Width,BmpSrc.Height) ‘指定目標畫布大小
DrawView=Graphics.FromImage(BmpView) ‘將繪圖工具指定給畫布
End Sub
Private Sub HScrollBar1_Scroll(ByVal …
Dim X As Integer
X=HScrollBar1.Value
DrawView.Clear(Color.White)
DrawView.DrawImage(BmpSrc,X,0) ‘將來源圖片貼到畫布的指定座標上
picView.Image=BmpView
‘將畫布顯示出來
End Sub
擷取影像-Clone
語法:
目的Bmp=來源Bmp.Clone(擷取範圍,影像格式)
擷取範圍:必需為一矩形(Rectangle)結構
Dim Cut As Rectangle
.
Cut=New Rectangle(X,Y,寬,高)
影像格式:需為像素資料,PixelFormat
擷取影像範例(一)
Dim BmpSrc,BmpView As Bitmap
Dim DrawView as Graphics
Private Sub Form_Load(ByVal…
BmpSrc=New Bitmap(picSrc.Image)
BmpView=New Bitmap(picView.Width,picView.Height)
DrawView=Graphics.FromImage(BmpView)
End Sub
Private Sub Button1_Click(ByVal ….
Dim BmpCut As Bitmap,Cut As Rectangle
Cut=New Rectangle(0,0,100,100) ‘設定擷取範圍
BmpCut=BmpSrc.Clone(Cut,BmpSrc.PixelFormat) ‘擷取
DrawView.Clear(Color.White)
‘清除畫布
DrawView.DrawImage(BmpCut,0,0) ‘將擷取的圖塊貼到畫布上
picView.Image=BmpView
End Sub
擷取影像範例(二)-亂數秀圖
將圖分割為八等份,並以Timer自動的一格一
格的將圖秀出
(0,0)
(0,100)
(100,0) (200,0)
(100,100)
原圖為400x200,因此每個分割單元為100x100
而貼圖時之座標則如圖上所示
擷取影像範例(二)-亂數秀圖
Dim ShowD As Integer
Dim G() As Integer={0,4,2,1,5,3,6,7} ‘設定顯示順序
Private Sub Button3_Click(ByVal …
DrawView.Clear(Color.White)
picView.Image = BmpView
ShowD=0
Timer1.Enabled = True
End Sub
Private Sub Timer1_Tick(ByVal …
Dim X,Y As Integer,BmpCut As Bitmap,Cut As Rectangle
X=(G(ShowD) Mod 4)*100:Y=(G(ShowD)\4)*100
Cut=New Rectangle(X,Y,100,100) ‘設定擷取範圍
BmpCut=BmpSrc.Clone(Cut,BmpSrc.PixelFormat) ‘擷取
DrawView.DrawImage(BmpCut,X,Y) ‘將擷取的圖塊貼到畫布上
picView.Image=BmpView
If ShowD = 7 Then
’判斷圖顯示完了沒有
ShowD = 0 : Timer1.Enabled = False ‘若指標等於8則圖已秀完,停止秀圖
Else
ShowD = ShowD + 1 ‘若不等於8則將指標調至下一個位置
End If
End Sub
擷取影像範例(三)-捲動
(40,0)
(80,0)
W1=400-40=360
W2=400-80=320
擷取貼上
擷取貼上
(0,0)
(0,0)
W1=360
W2=320
擷取影像範例(三)-捲動背景
Dim ScrollX As Integer
Private Sub Form1_Load(ByVal ...
ScrollX=0 ‘設定擷取起點變數
End Sub
Private Sub Button12_Click(ByVal sender...
Dim Cut As Rectangle ‘設定擷取矩形區
Dim Bmp As Bitmap
‘設定點陣圖區
DrawView.Clear(Color.White) ‘清除畫布
Cut = New Rectangle(ScrollX, 0, 400 - ScrollX, 200) ‘設定擷取來源圖塊範圍
Bmp = BmpSrc.Clone(Cut, BmpSrc.PixelFormat)
‘擷取來源圖塊
DrawView.DrawImage(Bmp, 0, 0, 400 - ScrollX, 200) ‘將擷取圖貼到畫布指定位置
ScrollX = ScrollX + 1
‘設定捲動值
picView.Image = BmpView ‘顯示畫布
End Sub
背景透明設定-MakeTransparent(色彩常數)
語法:
Bitmap物件.MakeTransparent(色彩常數)
色彩常數:是用來指定要去除的免彩,如:
Color.Black指的是將黑色設為透
明
去背
背景透明程式範例
Private Sub Button9_Click(ByVal ...
Dim bmp as Bitmap
Bmp = Image.FromFile(“PAll.bmp”) ‘載入圖檔(做為前景用)
Bmp.MakeTransparent(Color.Black) ‘設定載入圖檔中要設為透明的顏色
DrawView.Clear(Color.White)
DrawView.DrawImage(BmpSrc, 0, 0) ‘將背景圖貼到畫布
DrawView.DrawImage(Bmp, 330, 100) ‘將前景圖也貼到畫布
picView.Image = BmpView ‘將畫布顯示在圖片盒上
End Sub
圖片切換範例
Dim BmpPig As Bitmap,Running As Integer
Private Sub Form1_Load(ByVal ...
BmpPig = New Bitmap("PAll.bmp") ‘載入圖檔(做為前景用)
BmpPig.MakeTransparent(Color.Black) ‘設定載入圖檔中要設為透明的顏色
Running = 0
End Sub
Private Sub Button10_Click(ByVal ...
Dim bmp as Bitmap, Cut as Rectangle
DrawView.Clear(Color.White)
Cut = New Rectangle(0, Running * 64, 64, 64) ‘設定擷取來源圖塊範圍
Bmp = BmpPig.Clone(Cut, BmpPig.PixelFormat) ‘擷取來源圖塊
DrawView.DrawImage(BmpSrc, 0, 0) ‘將背景圖貼到畫布
DrawView.DrawImage(Bmp, 300, 120) ‘將前景圖也貼到畫布
Running = IIf(Running = 2, 1, 2) ‘調整動作擷取變數
picView.Image = BmpView ‘將畫布顯示在圖片盒上
End Sub