Вопрос: Сохранить графику | Добавлено: 10.01.11 16:41 |
Автор вопроса: ![]() |
Здравствуйте, столкнулся с проблемой...
Написал код, благодаря которому можно мышкой нарисовать что-то, мне нужно теперь сделать так что бы данные о нарисованном сохранялись в массив, и при необходимости можно было обратившись к данным получить рисунок. Не мог ли бы помочь? |
Ответы | Всего ответов: 32 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #1 | Добавлено: 10.01.11 17:13 |
Если ты рисуешь на Bitmap'e то у него есть метод Save позволяющий сохранить рисунок, если же как то иначе то надо видеть КАК именно ты рисуешь и тогда уже можно будет сказать что то более конкретное.. |
Номер ответа: 2 Автор ответа: ![]() ![]() Вопросов: 0 Ответов: 14 |
Профиль | Цитата | #2 | Добавлено: 10.01.11 17:16 |
В win32API можно через CreateEnhMetaFile.
А в NET ,видимо, new MetaFile(new MemoryStream()); ? |
Номер ответа: 3 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #3 | Добавлено: 11.01.11 19:30 |
Здравствуйте, Eros!
Я рисую на форме вот как: Dim graf As Graphics = CreateGraphics()
graf.DrawLine(Pens.Black, x1, y1, x2, y2) Как вбивать в массив каждую координату ключевую, я разобрался сам. Теперь появилась новая проблемка, 1) если курсор задержать в одной точке в массив вгоняются много одинаковых значений подряд, хотя это не нужно, не знаю как с этим бороться. думаю что если придумать какую-нибудь процедуру, которая бы проверяла значения и при обнаружении одинаковых подряд, удаляла все кроме одного. Если поможете с этой проблемкой, тогда я смогу сделать что бы рисовалось из массива, в случае сворачивания или необходимости с нуля вывести изображение. Заранее спасибо! |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 4 Ответов: 457 |
Web-сайт: Профиль | Цитата | #4 | Добавлено: 11.01.11 19:43 |
если курсор задержать в одной точке в массив вгоняются много одинаковых значений подряд с чего бы? Неужели координаты курсора по таймеру проверяются?!
|
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #5 | Добавлено: 11.01.11 20:08 |
и то верно. считывай координаты по MouseMove |
Номер ответа: 6 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #6 | Добавлено: 11.01.11 20:09 |
Сейчас объясню почему так, у меня код для рисования находится в таймере, поэтому так выходит наверное....просто я не нашел пока другого способа рисовать в след за курсором, если делаю не в таймере то нужно для рисования каждой линии отпускать и заново нажимать кнопку мыши, а так все работает пока mouse_down and move |
Номер ответа: 7 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #7 | Добавлено: 11.01.11 20:12 |
AgentFire пишет:
и то верно. считывай координаты по MouseMove Если этот код вставить в событие mouse_move то рисует вслед за курсором постоянно, и не останавливается, а это не удобно |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #8 | Добавлено: 11.01.11 20:35 |
в случае сворачивания
Ты неверно рисуешь.. надо рисовать в событии Paint (там уже передается Graphics и не надо ничего создавать),тогда при сворачивании изображение не будет пропадать.. Идея с таймером в корне неверна.. Ты объясни как ты хочешь чтоб рисовалось с точки зрения юзера, а потом тебе подскажут КАК это правильно сделать.. |
Номер ответа: 9 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #9 | Добавлено: 11.01.11 20:40 |
Мне нужно что бы, юзер мог что то нарисовать, затем то что он нарисовал, сохранилось не как картинка, а именно значениями всех координат в массиве. Что бы можно было потом работать с этими значениями |
Номер ответа: 10 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #10 | Добавлено: 11.01.11 20:46 |
EROS пишет:
надо рисовать в событии Paint Если делать в этом событии то: 1) рисует не в след за мышью, а только по точкам где кликнешь 2) во вторых если кликаешь по одному объекту(например по RectangleShape) то рисуется одна линия и все, а если начинаешь по нему и например по текстбоксу кликать рисуются линии но как в первом пункте |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #11 | Добавлено: 11.01.11 20:52 |
romashko1901 пишет:
Мне нужно что бы, юзер мог что то нарисовать, затем то что он нарисовал, сохранилось не как картинка, а именно значениями всех координат в массиве. Что бы можно было потом работать с этими значениями я бы создал тут класс, который бы содержал в конкретный момент времени конкретное действие (рисование стоп или старт, тип фигуры, цвет, координату), а затем список экземпляров таких классов. а сохранение сериализацией |
Номер ответа: 12 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #12 | Добавлено: 11.01.11 21:08 |
AgentFire пишет:
я бы создал тут класс А не могли бы помочь примером, или статейкой хорошоей по этому способу? |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #13 | Добавлено: 11.01.11 21:39 |
рабочий пример могу накатать рублей за 300 |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #14 | Добавлено: 12.01.11 02:23 |
рабочий пример могу накатать рублей за 300
AgentFire, ну ёмаё.. Настоящие джедаи так не поступают.. нельзя быть таким жлобом! Если бы это был хитрожопый студент,который лохов ищет,чтоб за него курсовую или зачет сделали - это один разговор.. С таких можно, и бы даже сказал нужно драть 3 шкуры. Но тут то совсем другой случай... Видишь же, пацан к знаниям тянется.. Таких поощрять надо! На вот лучше переведи на его "родной" язык,чтоб он понял о чем мы тут ему говорили и разобрался как это работает..
З.Ы. Ну и если не лень будет, допили пример чтоб сериализация была.. |
Номер ответа: 15 Автор ответа: ![]() ![]() ICQ: 416844272 Вопросов: 1 Ответов: 13 |
Профиль | Цитата | #15 | Добавлено: 12.01.11 13:08 |
EROS, Это C#? И это наверное нужно прописывать где происходит инициализация приложения? |
|