![]() |
|
Модераторы: Partizan, gambit |
![]()
|
|
| Xonxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: 1 Всего: 1 |
Знаю, такие темы уже были. Я их смотрел, но они мне или не подошли, или не работают. Так что спрошу еще раз.
Итак. У меня есть, к примеру, объект Panel. На этой панели я с помощью мыши что-нибудь рисую. Теперь я хочу сохранить нарисованное в файл. Как это сделать? Мне удалось сделать нечто подобное на основе pictureBox. Я сделал CreateGraphics() на pictureBox'e, а затем нарисованное перекидывал на Bitmap, а затем присваивал picture.Box.Image = Bitmap,или что-то в этом роде. Я и сам не понял В общем, помогите советом, либо, как сделать подобное на основе Panel, либо PictureBox. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
Обрабатывай событие Paint, в нём создавай новый Bitmap и новый Graphics из этого битмапа, рисуй всё в этот графикс, в конце обработчика диспозь графикс и сохраняй битмап в файл. Затем смело выводи битмап в графикс из PaintEventArgs.Graphics методом DrawImage
-------------------- ![]() |
|||
|
||||
| Xonxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: 1 Всего: 1 |
Ммм... примерно понятно... спасибо.
Но, всё-таки, не помешал бы простенький пример в виде листинга. |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Вот попытка материализовать мысли mr.DUDA
На форме: панель drawPanel и кнопка button1. В программе реализован простенький (очень простенький P. S. Проект в аттаче. Это сообщение отредактировал(а) Idsa - 18.3.2007, 01:56 Присоединённый файл ( Кол-во скачиваний: 15 )
TestWinApp.rar 31,12 Kb |
|||
|
||||
| Xonxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: 1 Всего: 1 |
Спасибо.
Вот что получилось у меня:
Единственная проблема: при самом рисовании из-за Invalidate() изображение дрожит. Сам посмотри. Куда посоветуешь переместить Invalidate()? А то если я помещу его в MouseUp, то нарисованную линию видно только когда отпустишь мышь, а это не есть хорошо! Присоединённый файл ( Кол-во скачиваний: 10 )
graph02.rar 35,37 Kb |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
"Дрожание" изображения - извечная проблема. Попробуй поставить свойство DoubleBuffered для формы в true. Если поможет, - хорошо, если же нет... нужно думать над оптимизацией.
Кстати, насчет оптимизации... по-моему не стоит сохранять изображение в MouseUp: накладненько однако |
|||
|
||||
| Xonxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: 1 Всего: 1 |
Гм.. у формы нет такого параметра DoubleBuffered.. Можно поподробнее?
Это сообщение отредактировал(а) Xonxt - 18.3.2007, 15:31 |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Есть! Посмотри в дизайнере в окне свойств, или напиши в конструкторе формы this.DoubleBuffered, или в MSDN глянь.
|
|||
|
||||
| agl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 25.6.2006 Репутация: нет Всего: 3 |
У тебя наверно vs 2005, в 2003 ничего подобного вроде нету.
|
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Я не пойму, почему некоторые не переходят на 2005-ю студию?! Все никак денег (80 рублей А вообще, конечно, странно: я DoubleBuffered юзал еще в Delphi 7. |
|||
|
||||
| agl |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 65 Регистрация: 25.6.2006 Репутация: нет Всего: 3 |
Дык, у кого привычка, у кого в заведениях стоят ещё старые студии. А при чем тут 80 рублей? Это цена пиратского диска
|
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Тссс... Переход на 2005 студию может подразумевать переход на фреймворк 2.0 или 3.0. Об особенностях как второго, так и третьего фреймворка написано немало статей. От себя могу сказать, что усовершенствования 2.0 принципиальны, а вот переход на 3.0 ИМХО можно отложить до 3.5 (и студии 2007). P. S. До меня только что дошло, что мы оффтопим |
|||
|
||||
| Xonxt |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 103 Регистрация: 24.1.2006 Где: Украина / Одесса Репутация: 1 Всего: 1 |
Закончу оффотп тем, что в Университете мы работаем с 2003, поэтому, дома я работаю, соответственно, тоже с 2003.
А в 2003 такого свойства как DoubleBuffered нету, а оно там реализуется как-то по-другому. Надо книжку почитать ) |
|||
|
||||
| Idsa |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 14 Всего: 62 |
Точно. Сейчас глянул в MSDN: действительно, DoubleBuffered появился только во втором фреймворке. |
|||
|
||||
| mr.DUDA |
|
|||
|
3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 110 Всего: 232 |
В 2003 у формы есть SetStyle(ControlStyles.DoubleBuffered), если я правильно помню.
-------------------- ![]() |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :) Так же не забывайте отмечать свой вопрос решенным, если он таковым является :) Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |