看板 Visual_Basic 關於我們 聯絡資訊
※ 引述《pkyu (鍋蓋)》之銘言: : 請輸入專案類型(網站專案或者應用程式專案): : 因為工作遇到的問題 所以跟各位請教一下 : 相機(工業用的品檢機)連接到PC 使用VB.NET 2005 exprese : 廠商的軟體本身已經有vb模組可使用 : 相機有800*600 模式 : 可是我VB做的框沒辦法這麼大,我該如何裁剪掉呢 : EX : ___________ ________ : | | | | : | | | | : | | ---> | | : | | |________| : |___________| : 5*5 4*4 : 實際大小 VB拉的範圍 : 雖說顯示會自己切掉,但是當用內建存圖,會抓超過vb拉的範圍 : 問題一、如何將照下來的照片裁成自己想要的大小? Function ClipImage(ByVal img As Image, ByVal r As Rectangle) As Image Dim bmp As New Bitmap(r.Width, r.Height) Dim g As Graphics = Graphics.FromImage(bmp) g.DrawImage(img, New Point(-r.X, -r.Y)) g.Dispose() Return bmp End Function 使用範例: Dim img As Image = Image.FromFile("d:\test.bmp") Dim img2 As Image = ClipImage(img, New Rectangle(10, 10, 200, 200)) img2.Save("d:\test_clip.bmp") : 問題二、如果我要再影像上加上輔助框該怎做?(類似樣品的定位點) 從Image建立Graphics,使用到Graphics.FromImage: Shared Function FromImage(ByVal image As Image) As Graphics 接著在用Graphics.DrawRectangle: Sub DrawRectangle(ByVal pen As Pen, ByVal rect As Rectangle) 畫出矩形,範例如下: Dim img As Image = Image.FromFile("d:\test.bmp") Using g As Graphics = Graphics.FromImage(img) g.DrawRectangle(Pens.Black, _ New Rectangle(0, 0, img.Width - 1, img.Height - 1)) End Using img.Save("d:\test_rect.bmp") : 問題三、該怎麼將影像中的座標點提取顏色出來判斷? 先用你的Image建立Bitmap,使用Bitmap.New: Sub New(ByVal original As Image) 接著使用Bitmap.GetPixel、Bitmap.SetPixel: Sub SetPixel(ByVal x As Integer, ByVal y As Integer, _ ByVal color As Color) Function GetPixel(ByVal x As Integer, ByVal y As Integer) As Color 使用範例: Dim img As Image = Image.FromFile("d:\test.bmp") Dim bmp As New Bitmap(img) For i As Integer = 0 To bmp.Width - 1 For j As Integer = 0 To bmp.Height - 1 Dim c As Color = bmp.GetPixel(i, j) Dim _c As Color = Color.FromArgb(c.A / 2, _ c.R / 2, _ c.G / 2, _ c.B / 2) bmp.SetPixel(i, j, _c) Next Next bmp.Save("d:\test_handle.bmp") : 麻煩懂的人提點提點(因為剛接觸VB,工作又有點趕) : 我會很感謝大家的 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.164.82.202