Ух. Нуи вопросов накопилось...
1)Как сделать изображение полупросрачным.
2)Как изменить цветность изображения(добавить красного, зелёного или синего цвета).
3)как исказить изображение(например, чтобы оно из прямоугольного стало-бы ромбом).
4)Можно-ли сделать тоже самое с элементами управления(например с Labelaми).
Плиз обьясни нормально, ато я уже задалбался сотни сайтов перелопачивать в поисках инфы, плюс инет у меня лимитный и я просадил на этом уже рублей 500.
1.
AlphaBlend - функция, подобная StretchBlt, но позволяет накладывать с прозрачностью. Гугли))
2.
Каждый картинго состоит из двухмерного массива пикселей. Каждый пиксель состоит из трех цветов - красный, зеленый и синий. Цвет получается за счет их смешивания. Получаем алгоритм покраснения изображения (на вскидку).
Dim X AsLong
Dim Y AsLong
Dim Color AsLong, r%, g%, b%
For X = 0 To Width
For Y = 0 To Height
color = picture1.point(x,y) 'Тырим цвет - число типа Long
r = color mod 256: color = color \256 'Получаем красный (число от 0 до 255)
g = color mod 256: color = color \256 'Получаем зеленый (число от 0 до 255)
b = color 'Получаем синий(число от 0 до 255)
r = r + 50 'делаем пиксель краснее
picture1.pset(x,y),rgb(r,g,b)
Next y
Doevents
next X
3. Функция PlgBlt обладает свойством отображать изображение параллелограммом под любым углом.
4. Подумай сам. Проще сделать элемент управления с нуля.
Imports System.Drawing
Imports System.Drawing.Imaging
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim img As Image = PictureBox1.Image
Dim copy As Bitmap = New Bitmap(img.Width, img.Height)
Dim ia As ImageAttributes = New ImageAttributes
Dim cm As ColorMatrix = New ColorMatrix(New 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, 0.5, 0}, _
New Single() {0, 0, 0, 0, 1}})
ia.SetColorMatrix(cm)
Dim g As Graphics
g = Graphics.FromImage(copy)
g.DrawImage(img, _
New Rectangle(0, 0, img.Width, img.Height), 0, 0, _
img.Width, img.Height, GraphicsUnit.Pixel, ia)
PictureBox1.Image = copy
g.Dispose()
img.Dispose()
End Sub
End Class
Может матрица поможет?
Матрица быстрее обробатывает изображения...
Добавляешь на форму 2 PicturesBox-а и в свойствах PicturesBox2 вставляешь цветной рисунок, добавляешь 4 NumericUpDown(1-Красный,2-Зелёный,3-Синий,4-Прозрачность)
Dim green = NumericUpDown2.Value.ToString / 255
Dim red = NumericUpDown1.Value.ToString / 255
DIm blue = NumericUpDown3.Value.ToString / 255
Dim col = NumericUpDown4.Value.ToString / 255
Dim img As Image = PictureBox2.Image.Clone
Dim copy As Bitmap = New Bitmap(img.Width, img.Height)
Dim ia As ImageAttributes = New ImageAttributes
Dim cm As ColorMatrix = New ColorMatrix(NewSingle()() _
{NewSingle() {red, 0, 0, 0, 0}, _
NewSingle() {0, green, 0, 0, 0}, _
NewSingle() {0, 0, blue, 0, 0}, _
NewSingle() {0, 0, 0, col, 0}, _
NewSingle() {0, 0, 0, 0, 1}})
ia.SetColorMatrix(cm)
Dim g As Graphics
g = Graphics.FromImage(copy)
g.DrawImage(img, _
New Rectangle(0, 0, img.Width, img.Height), 0, 0, _