VB.Net Tutorial/2D Graphics/Image Color — различия между версиями
Admin (обсуждение | вклад) м (1 версия) |
|
(нет различий)
|
Версия 19:40, 26 мая 2010
Содержание
Gray Scale Image
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class GrayScaleImage
public Shared Sub Main Application.Run(New Form1) End Sub
End class public class Form1
Inherits System.Windows.Forms.Form Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim curBitmap As New Bitmap("yourfile.jpg") g.DrawImage(curBitmap, 0, 0, curBitmap.Width, curBitmap.Height) " Dim i As Integer For i = 0 To 100 Dim j As Integer For j = 0 To 100 Dim curColor As Color = curBitmap.GetPixel(i, j) Dim ret As Integer = (curColor.R + curColor.G + curColor.B) / 3 "curBitmap.SetPixel(i, j, Color.FromArgb(ret, ret, ret)) Next j Next i g.DrawImage(curBitmap, 0, 0, curBitmap.Width, curBitmap.Height) g.Dispose() End Sub Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 273) Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen End Sub
End Class</source>
Pick a color from an Image
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class ColorPicker
public Shared Sub Main Application.Run(New Form1) End Sub
End class Public Class Form1
Inherits System.Windows.Forms.Form Public Sub New() MyBase.New() InitializeComponent() End Sub Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub Private components As System.ruponentModel.IContainer Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox Friend WithEvents Label1 As System.Windows.Forms.Label Friend WithEvents Label2 As System.Windows.Forms.Label Friend WithEvents Label3 As System.Windows.Forms.Label Friend WithEvents MainMenu1 As System.Windows.Forms.MainMenu Friend WithEvents MenuItem1 As System.Windows.Forms.MenuItem Friend WithEvents MenuItem2 As System.Windows.Forms.MenuItem Friend WithEvents MenuItem3 As System.Windows.Forms.MenuItem Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.PictureBox1 = New System.Windows.Forms.PictureBox Me.Label1 = New System.Windows.Forms.Label Me.Label2 = New System.Windows.Forms.Label Me.Label3 = New System.Windows.Forms.Label Me.MainMenu1 = New System.Windows.Forms.MainMenu Me.MenuItem1 = New System.Windows.Forms.MenuItem Me.MenuItem2 = New System.Windows.Forms.MenuItem Me.MenuItem3 = New System.Windows.Forms.MenuItem Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog Me.SuspendLayout() " "PictureBox1 " Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D Me.PictureBox1.Dock = System.Windows.Forms.DockStyle.Top Me.PictureBox1.Image = Image.FromFile("YourFile.bmp") Me.PictureBox1.Location = New System.Drawing.Point(0, 0) Me.PictureBox1.Name = "PictureBox1" Me.PictureBox1.Size = New System.Drawing.Size(292, 216) Me.PictureBox1.TabIndex = 0 Me.PictureBox1.TabStop = False " "Label1 " Me.Label1.Location = New System.Drawing.Point(24, 232) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(56, 24) Me.Label1.TabIndex = 1 Me.Label1.Text = "R:" " "Label2 " Me.Label2.Location = New System.Drawing.Point(112, 232) Me.Label2.Name = "Label2" Me.Label2.Size = New System.Drawing.Size(64, 24) Me.Label2.TabIndex = 2 Me.Label2.Text = "G:" " "Label3 " Me.Label3.Location = New System.Drawing.Point(208, 232) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(64, 24) Me.Label3.TabIndex = 3 Me.Label3.Text = "B:" " "MainMenu1 " Me.MainMenu1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem1}) " "MenuItem1 " Me.MenuItem1.Index = 0 Me.MenuItem1.MenuItems.AddRange(New System.Windows.Forms.MenuItem() {Me.MenuItem2, Me.MenuItem3}) Me.MenuItem1.Text = "File" " "MenuItem2 " Me.MenuItem2.Index = 0 Me.MenuItem2.Text = "Open" " "MenuItem3 " Me.MenuItem3.Index = 1 Me.MenuItem3.Text = "Exit" " "Form1 " Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 270) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.Label2) Me.Controls.Add(Me.Label1) Me.Controls.Add(Me.PictureBox1) Me.Menu = Me.MainMenu1 Me.ResumeLayout(False) End Sub Dim pic As Bitmap Dim c As System.Drawing.Color Dim xwidth, yheight As Integer Private Sub PictureBox1_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseDown pic = PictureBox1.Image xwidth = pic.Width yheight = pic.Height If e.X < xwidth And e.Y < yheight Then c = pic.GetPixel(e.X, e.Y) Label1.Text = "R:" + c.R.ToString Label2.Text = "G:" + c.G.ToString Label3.Text = "B:" + c.B.ToString End If End Sub Private Sub MenuItem2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem2.Click OpenFileDialog1.ShowDialog() PictureBox1.Image = New Bitmap(OpenFileDialog1.FileName) End Sub Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click End End Sub
End Class</source>
Recolor Image
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class RecoloringTranslation
public Shared Sub Main Application.Run(New Form1) End Sub
End class public class Form1
Inherits System.Windows.Forms.Form Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim curBitmap As New Bitmap("yourfile.jpg") Dim ptsArray As Single()() = {New Single() {1, 0, 0, 0, 0}, New Single() {0, 1, 0, 0, 0}, New Single() {0, 0, 1, 0, 0}, New Single() {0, 0, 0, 1, 0}, New Single() {0.9F, 0.0F, 0.0F, 0.0F, 1}} Dim clrMatrix As New ColorMatrix(ptsArray) Dim imgAttribs As New ImageAttributes imgAttribs.SetColorMatrix(clrMatrix, ColorMatrixFlag.Default, ColorAdjustType.Default) g.DrawImage(curBitmap, 0, 0, 200, 200) g.DrawImage(curBitmap, New Rectangle(205, 0, 200, 200), 0, 0, curBitmap.Width, curBitmap.Height, GraphicsUnit.Pixel, imgAttribs) curBitmap.Dispose() g.Dispose() End Sub Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 273) Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen End Sub
End Class</source>
Recolor image rotation
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class RecoloringRotation
public Shared Sub Main Application.Run(New Form1) End Sub
End class public class Form1
Inherits System.Windows.Forms.Form Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim degrees As Single = 45.0F Dim r As Double = degrees * System.Math.PI / 180 Dim g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim curBitmap As New Bitmap("yourfile.jpg") Dim ptsArray As Single()() = {New Single() {CSng(System.Math.Cos(r)), CSng(System.Math.Sin(r)), 0, 0, 0}, New Single() {CSng(-System.Math.Sin(r)), CSng(-System.Math.Cos(r)), 0, 0, 0}, New Single() {0.5F, 0, 1, 0, 0}, New Single() {0, 0, 0, 1, 0}, New Single() {0, 0, 0, 0, 1}} Dim clrMatrix As New ColorMatrix(ptsArray) Dim imgAttribs As New ImageAttributes imgAttribs.SetColorMatrix(clrMatrix, ColorMatrixFlag.Default, ColorAdjustType.Default) g.DrawImage(curBitmap, 0, 0, 200, 200) g.DrawImage(curBitmap, New Rectangle(205, 0, 200, 200), 0, 0, curBitmap.Width, curBitmap.Height, GraphicsUnit.Pixel, imgAttribs) curBitmap.Dispose() g.Dispose() End Sub Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 273) Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen End Sub
End Class</source>
Recolor image Scaling
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class RecoloringScaling
public Shared Sub Main Application.Run(New Form1) End Sub
End class public class Form1
Inherits System.Windows.Forms.Form Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim curBitmap As New Bitmap("yourfile.jpg") Dim ptsArray As Single()() = {New Single() {1, 0, 0, 0, 0}, New Single() {0, 0.8F, 0, 0, 0}, New Single() {0, 0, 0.5F, 0, 0}, New Single() {0, 0, 0, 0.5F, 0}, New Single() {0, 0, 0, 0, 1}} Dim clrMatrix As New ColorMatrix(ptsArray) Dim imgAttribs As New ImageAttributes imgAttribs.SetColorMatrix(clrMatrix, ColorMatrixFlag.Default, ColorAdjustType.Default) g.DrawImage(curBitmap, 0, 0, 200, 200) g.DrawImage(curBitmap, New Rectangle(205, 0, 200, 200), 0, 0, curBitmap.Width, curBitmap.Height, GraphicsUnit.Pixel, imgAttribs) curBitmap.Dispose() g.Dispose() End Sub Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 273) Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen End Sub
End Class</source>
Recolor image shearing
<source lang="vbnet">Imports System.Drawing Imports System.Drawing.Imaging Imports System.Drawing.Drawing2D Imports System.Windows.Forms public class RecoloringShearing
public Shared Sub Main Application.Run(New Form1) End Sub
End class public class Form1
Inherits System.Windows.Forms.Form Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs) Dim g As Graphics = Me.CreateGraphics() g.Clear(Me.BackColor) Dim curBitmap As New Bitmap("yourfile.jpg") Dim ptsArray As Single()() = {New Single() {1, 0, 0, 0, 0}, New Single() {0, 1, 0, 0, 0}, New Single() {0.5F, 0, 1, 0, 0}, New Single() {0, 0, 0, 1, 0}, New Single() {0, 0, 0, 0, 1}} Dim clrMatrix As New ColorMatrix(ptsArray) Dim imgAttribs As New ImageAttributes imgAttribs.SetColorMatrix(clrMatrix, ColorMatrixFlag.Default, ColorAdjustType.Default) g.DrawImage(curBitmap, 0, 0, 200, 200) g.DrawImage(curBitmap, New Rectangle(205, 0, 200, 200), 0, 0, curBitmap.Width, curBitmap.Height, GraphicsUnit.Pixel, imgAttribs) curBitmap.Dispose() g.Dispose() End Sub Public Sub New() MyBase.New() Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(292, 273) Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen End Sub
End Class</source>