| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Общие вопросы по .NET и C# > Разработка графического редактора |
| Автор: EgoBrain 23.3.2008, 13:00 |
| Здравствуйте. Я разрабатываю простой графический редактор. Всё рисование на форме осуществляется в событиях MouseDown, MouseMove, MouseUp. Естественно после перерисовки формы изображение пропадает. :dash1 Переделывать всё под событие OnPaint лень, много переделывать придётся, плюс я незнаю стандартной технологии рисования по OnPaint. Была идея сбрасывать уже нарисованное в битовую карту каждый раз, и каждый раз заново воспроизводить, как это реализовать, или может есть другие подходы без глобальных переделок кода? Времени слишком мала, в мае сдача дипломки, тема связанная с графикой в .NET :wacko |
| Автор: 0lmer 23.3.2008, 14:43 |
| Посмотри в MSDN на тему GDI. Мож чего найдешь хорошего. |
| Автор: vponomarov 23.3.2008, 15:54 |
| EgoBrain, вот чувак тем же занимался. говорит, что я ему помог, все заработало http://forum.vingrad.ru/forum/topic-201830/kw-simole-paint-redactor.html |
| Автор: EgoBrain 24.3.2008, 07:11 | ||
| Хмм... Вариант сбрасывания в файл я не рассматривал, всё время мучился вопросом как сохранять битовую карту в памяти и загружать её в рисуемую область. Это реально? Хотя можно попробывать и с файлом... Блин, опять гемор в итоге... Тьфу блин, всё вижу, здесь не через файл идёт работа, а в памяти... Но всё равно никак до ума довести не могу, получается сделать чтоб рисунок не пропадал, но не видно самого процесса рисования (нарисованное появляется только после перерисовки формы). В общем не мог бы ты ещё раз всё по-порядку объяснить что и как, и не просто код привести, а в научно публицистическом стиле рассказать А вот, всё, получилось, неужели Да, кстати, впервые вижу чтоб объявляли экземпляры классов здесь:
|
| Автор: vponomarov 24.3.2008, 10:45 | ||
а что в этом такого? и кстати, если ты имеешь в виду pictureBox1.Image=new Bitmap(pictureBox1.Width,pictureBox1.Height); - то это инициализация. где же ее делать как не в конструкторе? а если Graphics myGraphix=... , то это просто вспомогательный объект, чтобы залить картинку. опять же не вижу ничего противоестественного |
| Автор: EgoBrain 24.3.2008, 14:22 |
| Новая проблема: размеры битовой карты, по которой происходит рисование, не совпадают с размерами клиентской области pictureBox, причём возникает это абсолютно по непонятным причинам и поразному (бывает просто нижнюю часть отрезает, а бывает нижнюю и правую). Кто-нибудь сталкивался? |
| Автор: Dennnis 24.3.2008, 15:58 | ||
Так же используй двойную буферизацию. Ты рисуешь на невидимой Graphics, а затем просто попируешь содержимое в графикс формы
|
| Автор: EgoBrain 25.3.2008, 04:22 |
| Что за пространства имён System.Collections.Generic и System.Linq. Какую версию Framework юзаешь? У меня в системе нет таких пространств о_О. WinXP SP2, .NET Framework 1.1. Походу 2.0 нуна? |
| Автор: QryStaL 25.3.2008, 10:14 |
| System.Collections.Generic из 2.0 System.Linq из 3.5 2.0 очень желательно, есть довольно существенные отличия от 1.1 |
| Автор: EgoBrain 21.4.2008, 03:26 |
| Немогу найти информацию по вопросу: как осуществить в C# заливку области обозначенной одним цветом, тобишь как это реализовано в MS Paint. |