VB.Net Tutorial/2D Graphics/Image Color — различия между версиями

Материал из VB Эксперт
Перейти к: навигация, поиск
м (1 версия)
 
(нет различий)

Текущая версия на 15:55, 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>