Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Вопросы Добавлено: 31.08.09 08:23  

Автор вопроса:  UnDeAdZak
Ух. Нуи вопросов накопилось...
1)Как сделать изображение полупросрачным.
2)Как изменить цветность изображения(добавить красного, зелёного или синего цвета).
3)как исказить изображение(например, чтобы оно из прямоугольного стало-бы ромбом).
4)Можно-ли сделать тоже самое с элементами управления(например с Labelaми).

Ответить

  Ответы Всего ответов: 9  

Номер ответа: 1
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #1
Добавлено: 31.08.09 10:03
Как сделать изображение полупросрачным.

Пичатой на бумашшко и иди в туалет. Лучше с AlphaBlend.
2)Как изменить цветность изображения(добавить красного, зелёного или синего цвета).

Думать головой. Почитай, из чего состоят изображения и как их обрабатывать. Там все просто.
3)как исказить изображение(например, чтобы оно из прямоугольного стало-бы ромбом).

PlgBlt
Можно-ли сделать тоже самое с элементами управления(например с Labelaми).

Только если сам напишешь. Или дуй в WPF.

Ответить

Номер ответа: 2
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #2 Добавлено: 31.08.09 10:13
Плиз обьясни нормально, ато я уже задалбался сотни сайтов перелопачивать в поисках инфы, плюс инет у меня лимитный и я просадил на этом уже рублей 500.=)

Ответить

Номер ответа: 3
Автор ответа:
 VβÐUηìt



Вопросов: 246
Ответов: 3333
 Web-сайт: смекаешь.рф
 Профиль | | #3
Добавлено: 31.08.09 10:45
0.
полупросрачным

1.
AlphaBlend - функция, подобная StretchBlt, но позволяет накладывать с прозрачностью. Гугли))
2.
Каждый картинго состоит из двухмерного массива пикселей. Каждый пиксель состоит из трех цветов - красный, зеленый и синий. Цвет получается за счет их смешивания. Получаем алгоритм покраснения изображения (на вскидку).
  1.  
  2. Dim X As Long
  3. Dim Y As Long
  4. Dim Color As Long, r%, g%, b%
  5. For X = 0 To Width
  6. For Y = 0 To Height
  7. color = picture1.point(x,y) 'Тырим цвет - число типа Long
  8. r = color mod 256: color = color \256 'Получаем красный (число от 0 до 255)
  9. g = color mod 256: color = color \256 'Получаем зеленый (число от 0 до 255)
  10. b = color 'Получаем синий(число от 0 до 255)
  11. r = r + 50 'делаем пиксель краснее
  12. picture1.pset(x,y),rgb(r,g,b)
  13. Next y
  14. Doevents
  15. next X


3. Функция PlgBlt обладает свойством отображать изображение параллелограммом под любым углом.
4. Подумай сам. Проще сделать элемент управления с нуля.

Ответить

Номер ответа: 4
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #4 Добавлено: 31.08.09 10:50
Спасибо бальшое! Я уже заметил.

Ответить

Номер ответа: 5
Автор ответа:
 UnDeAdZak



Вопросов: 80
Ответов: 476
 Профиль | | #5 Добавлено: 31.08.09 12:00
Насчёт прозрачности.
Я делаю:
  1.  
  2.     Dim A As New Bitmap("D:111.jpg")
  3.     Dim Col As Color
  4.     Dim R As Byte
  5.     Dim G As Byte
  6.     Dim B As Byte
  7.     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  8.         Dim X As Long
  9.         Dim Y As Long
  10.         For X = 0 To 175
  11.             For Y = 0 To A.Width - 1
  12.                 Col = A.GetPixel(X, Y)
  13.                 R = Col.R
  14.                 G = Col.G
  15.                 B = Col.B
  16.                 A.SetPixel(X, Y, Color.FromArgb(40, R, G, B))
  17.             Next
  18.         Next
  19.         PictureBox1.Image = A
  20.            End Sub


Но при проверке я выясняю что Col.A как был 255 так и остался. Подскажите, где у меня ошибка?

Ответить

Номер ответа: 6
Автор ответа:
 xXxSataNxXx



Вопросов: 4
Ответов: 9
 Профиль | | #6 Добавлено: 31.08.09 21:36
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


Может матрица поможет?
Матрица быстрее обробатывает изображения...

Ответить

Номер ответа: 7
Автор ответа:
 xXxSataNxXx



Вопросов: 4
Ответов: 9
 Профиль | | #7 Добавлено: 31.08.09 21:38
Это я про полупрозрачность...

Ответить

Номер ответа: 8
Автор ответа:
 xXxSataNxXx



Вопросов: 4
Ответов: 9
 Профиль | | #8 Добавлено: 31.08.09 21:40
С помощью этой матрицы можно менять и оттенки разных цветов...
  1. New Single() {1, 0, 0, 0, 0}
За каждый цвет отвечает каждая строка, 4-ая строка за прозрачность...

Ответить

Номер ответа: 9
Автор ответа:
 xXxSataNxXx



Вопросов: 4
Ответов: 9
 Профиль | | #9 Добавлено: 31.08.09 23:50
Добавляешь на форму 2 PicturesBox-а и в свойствах PicturesBox2 вставляешь цветной рисунок, добавляешь 4 NumericUpDown(1-Красный,2-Зелёный,3-Синий,4-Прозрачность)
  1. Dim green = NumericUpDown2.Value.ToString / 255
  2.         Dim red = NumericUpDown1.Value.ToString / 255
  3.         DIm blue = NumericUpDown3.Value.ToString / 255
  4.         Dim col = NumericUpDown4.Value.ToString / 255
  5.         Dim img As Image = PictureBox2.Image.Clone
  6.         Dim copy As Bitmap = New Bitmap(img.Width, img.Height)
  7.         Dim ia As ImageAttributes = New ImageAttributes
  8.         Dim cm As ColorMatrix = New ColorMatrix(New Single()() _
  9.         {New Single() {red, 0, 0, 0, 0}, _
  10.          New Single() {0, green, 0, 0, 0}, _
  11.          New Single() {0, 0, blue, 0, 0}, _
  12.          New Single() {0, 0, 0, col, 0}, _
  13.         New Single() {0, 0, 0, 0, 1}})
  14.         ia.SetColorMatrix(cm)
  15.         Dim g As Graphics
  16.         g = Graphics.FromImage(copy)
  17.         g.DrawImage(img, _
  18.                     New Rectangle(0, 0, img.Width, img.Height), 0, 0, _
  19.                     img.Width, img.Height, GraphicsUnit.Pixel, ia)
  20.         PictureBox1.Image = copy
  21.         g.Dispose()
  22.         img.Dispose()
  23.         Me.Text = "A=" & NumericUpDown4.Value.ToString & ", R=" & NumericUpDown1.Value.ToString & ", G=" & NumericUpDown2.Value.ToString & ", B=" & NumericUpDown3.Value.ToString

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам