Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Visual Basic 2008 проблемы с графикой (gdi+) Добавлено: 10.04.11 19:25  

Автор вопроса:  DrKillJoy
Люди!!! Если тут кто-нибудь есть отзовитесь!!! Помогите очень нужно!!! Я долго искал по этой теме в интернете, но ничего не нашел!!! Если тут кто-то есть, может кто знает?!?!?!

Моя проблема:

Я в Visual Basic 2008 работаю с графикой (gdi+), отрисовываю в picturebox рисунок.

Вот код:

Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox5.Paint
Dim pic As Bitmap
        pic = Image.FromFile("C:\door.bmp")      
        e.Graphics.DrawImage(pic, 0, 0)
End Sub


Затем мне нужно у отрисовонного изображения получить значение цвета, в каких либо точках:
Private Sub PictureBox1_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox2.MouseMove
        Dim a As Bitmap
        Dim b As Color
        a = PictureBox1.Image 'Здесь говорить, что nothing
        b = a.GetPixel(e.X, e.Y)
        Me.Text = b.ToString 'Здесь должен выводиться цвет
End Sub


Код правильный, но он не работает!!! Почему-то DrawImage не перерисовывает рисунок и Picturebox1.image остается пустой. Помогите!!! Мне очень нужно!!!


P.S. Мне предлогали поступить так PictureBox1.Image = Image.FromFile("C:\door.bmp"), но это не выход. Мне нужно именно то, что получиться в результате DrawImage.

Ответить

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

Номер ответа: 1
Автор ответа:
 СанСаныч



Вопросов: 3
Ответов: 118
 Профиль | | #1 Добавлено: 10.04.11 19:44
Ты работаешь с pic, вот и передай ее в PictureBox1_MouseMove.

Ответить

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



Вопросов: 10
Ответов: 18
 Профиль | | #2 Добавлено: 10.04.11 20:26
Ближе!!! Но еще не то. :(
Я могу по нескольку раз добавить изображение через DrawImage, могу добавить точки, линии. Вот у этого перерисованного изображения, мне и нужно получит некоторые цвета!!!
Может кто еще подскажет??? Очень нужно!!!

Ответить

Номер ответа: 3
Автор ответа:
 СанСаныч



Вопросов: 3
Ответов: 118
 Профиль | | #3 Добавлено: 10.04.11 21:23
Меня опять не в всерьез принимают. По пунктам:
1. Вынеси Dim pic As Bitmap на уровень модуля и преврати Bitmap в Image => Dim pic As Bitmap
2. После pic = Image.FromFile("C:\door.bmp";) добавь PictureBox1.Image = pic

Ответить

Номер ответа: 4
Автор ответа:
 СанСаныч



Вопросов: 3
Ответов: 118
 Профиль | | #4 Добавлено: 10.04.11 21:24
СанСаныч пишет:
Bitmap в Image => Dim pic As Bitmap

*Bitmap в Image => Dim pic As Image

Ответить

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



Вопросов: 10
Ответов: 18
 Профиль | | #5 Добавлено: 11.04.11 14:45
Я после DrawImage, могу еще раз воспользоваться DrawImage и нарисовать маленький рисунок, точку или линию.
И эти точки не как не занесутся в переменную img, то есть при получении цвета точки, цвет будет браться, как из ("C:\door.bmp";) и не будет смотреть на новые изменения.

Может я что-то не понимаю??? Но оно не работает!!!

ПОМОГИТЕ!!! ПОМОГИТЕ!!! ПОМОГИТЕ!!! ПОМОГИТЕ!!! ПОМОГИТЕ!!!

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #6 Добавлено: 11.04.11 16:03
Вот ты рисуешь рисунок:

  1. Dim bmp as New Bitmap(640, 480)
  2. Using gr = Graphics.FromImage(bmp)
  3.     gr.DrawSomething(...)
  4. End Using
И после этого ты можешь присвоить любому PictureBox'у этот Image, а так же брать с него пиксели методом GetPixel..

Ответить

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



Вопросов: 10
Ответов: 18
 Профиль | | #7 Добавлено: 13.04.11 10:44
Долго не мог попасть на сайт!!!

AgentFire, спасибо!!! Ты мне очень помог!!!
Твой пример действительно работает.
СПАСИБО!!!

Ответить

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



Вопросов: 0
Ответов: 2
 Профиль | | #8 Добавлено: 21.04.11 14:23
Вот такая проблема:
        ;Dim g As BufferedGraphicsContext = BufferedGraphicsManager.Current
        ;Dim buf As BufferedGraphics
        With frmForm1
            buf = g.Allocate(.PictureBox1.CreateGraphics, .PictureBox1.DisplayRectangle)
            buf.Graphics.FillRectangle(Brushes.White, .PictureBox1.DisplayRectangle)
            buf.Graphics.DrawEllipse(New Pen(Brushes.Black, 3), 5, 5, 280, 280)
            buf.Graphics.DrawPie(New Pen(Brushes.Black, 3), 5, 5, 280, 280, 270 - .TrackBar1.Value, .TrackBar1.Value * 2)
            buf.Graphics.FillPie(Brushes.LightGreen, 5, 5, 280, 280, 270 - .TrackBar1.Value, .TrackBar1.Value * 2)
            buf.Graphics.DrawPie(New Pen(Brushes.Black, 2), 125, 125, 40, 40, 270 - .TrackBar1.Value, .TrackBar1.Value * 2)
            buf.Render()
        End With
1. При вызове этой процедуры событием Click основного меню: изображение появляется на долю секунды и исчезает;
2. При сворачивании формы и последующем ее раворачивании - изображение исчезает;
3. При вызове этой процедуры событием TrackBar1_Scroll - работает нормально.

Чайник - признаюсь... Вешаюсь: что не так? подскажите!

Ответить

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



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #9 Добавлено: 21.04.11 14:32
> что не так?
Не рисуешь на PictureBox.Image

Ответить

Номер ответа: 10
Автор ответа:
 mihejka



Вопросов: 0
Ответов: 2
 Профиль | | #10 Добавлено: 22.04.11 09:21
Для AgentFire - С П А С И Б О !!!

Ответить

Страница: 1 |

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



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