Страница: 1 | 2 | 3 |
Вопрос: System.Drawing2D.GraphicsState
Добавлено: 29.12.08 16:07
Автор вопроса: diplay
Ответы
Всего ответов: 43
Номер ответа: 16
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #16
Добавлено: 30.12.08 19:07
А причем здесь FromImage?
Этот метод ведь тупо загружает в Graphics картинку и показывает ее.
Номер ответа: 17
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #17
Добавлено: 30.12.08 19:24
Ты сам то понял что сказал?
Во первых, в Graphics ничего загрузить нельзя..
Во вторых, Graphics ничего не показывает
В третьих, Graphics предоставляет методы для рисования на контексте.
В четвертых, рисовать с помощью Graphics ты можешь на чем угодно.. на кнопке, на ImageBox, на форме.. т.е. практически на любом объекте.
В пятых, метод FromImage создает объект Graphics чтобы ты мог рисовать на Bitmap, который создашь и который будешь отрисовывать на своем контроле в методе OnPaint
Что касается твоей софтины, то ты там изначально пошел по неверному пути(ну да спишем это на недостаток опыта) Но для учебного пособия тебе ее хватит..
Номер ответа: 18
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #18
Добавлено: 30.12.08 19:32
Еще один факт тебе для раздумья.. включи в своей софтине координатную сетку и перетащи ее так,чтобы она на половину ушла за край экрана, а потом верни фориу назад.. Половины твоей сетки не будет, догадаешься почему?
То же самое касается и остальных нарисованных тобой фигур..
Номер ответа: 19
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #19
Добавлено: 30.12.08 19:35
Если я все правильно понял, то надо в начале создать битмап. Но чтобы его создать нужно иметь какой-нибудь графический файл
Номер ответа: 20
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #20
Добавлено: 30.12.08 19:37
Половины твоей сетки не будет, догадаешься почему?
Потому что в при изменениях размера врубается метод Paint, который перерисовывает заново контрол.
Номер ответа: 21
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #21
Добавлено: 30.12.08 19:39
Вооот.. уже ближе к телу!!! Ты на правильном пути юный падован.. ))
На самом деле тебе лучше воспользоваться другим конструктором битмапа, например этим
Member of System.Drawing.Bitmap
Summary:
Initializes a new instance of the System.Drawing.Bitmap class with the specified size.
Parameters:
width: The width, in pixels, of the new System.Drawing.Bitmap.
height: The height, in pixels, of the new System.Drawing.Bitmap.
где ширина и высота равны размерам твоего контрола
Номер ответа: 22
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #22
Добавлено: 30.12.08 19:42
Я смотрел все 12 overloads конструктора, но этого не заметил. Так я ступил)
Номер ответа: 23
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #23
Добавлено: 30.12.08 19:42
Не совсем так.. к тому же мы размеры не меняем.. мы просто утащили форму за край экрана и вернули на место.. тоже самое будет если ты ее свернешь/развернешь
На самом деле это о чем я писал ранее - это последствия твоего использования CreateGraphics.. Если бы сделал это, как я говорил ранее в Paint, то этого бы не произошло..
Номер ответа: 24
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #24
Добавлено: 30.12.08 19:46
А битмап как отрисовывать на контроле? Через свойство BackgroundImage можно? Или через Graphics.DrawImage()?
Номер ответа: 25
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #25
Добавлено: 30.12.08 19:49
сейчас я перенес строчку a = me.Creategraphics в paint
a = Me.CreateGraphics
End Sub
Но ничего не изменилось
Номер ответа: 26
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #26
Добавлено: 30.12.08 19:50
Лучше через Graphics.DrawImage().. но делай это в событии Paint
у тебя там будет что то типа e.Graphics.DrawImage ...
Номер ответа: 27
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #27
Добавлено: 30.12.08 19:56
Не рисует теперь.
Номер ответа: 28
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #28
Добавлено: 30.12.08 20:09
я понял прикол
теперь он отбразит то,что ты нарисовал, когда ты вынудишь его вызвать метод Paint, например, изменением размера, утаскиванием за экран и т.п.
Номер ответа: 29
Автор ответа:
diplay
Вопросов: 4
Ответов: 69
Профиль | | #29
Добавлено: 30.12.08 20:17
Надо вручную вызывать этот метод после каждого действия пользователя.
например, вставить вызов метода в btnDraw_Click, чтобы при рисовании он сам перерисовывался, но как передать в качестве аргумента e As System.Windows.Forms.PaintEventArgs так, чтобы все сработало?
Номер ответа: 30
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #30
Добавлено: 30.12.08 20:20
блин.. друг, ну не тормози уже,а