Страница: 1 |
Вопрос: Графика | Добавлено: 13.03.09 14:34 |
Автор вопроса: ![]() |
Уважаемый читатель, я, одинадцатиклассник-быдлокодер попал впросак из-за незнания, да и просто неумения найти информацию. Если ты хоть что-то знаешь о работе с графикой в Visual Studio 2005 (что угодно из Visual Basic, C#, C++, J#), то постарайся помочь мне. Любая информация, например, как прописать хоть что-нибудь, что искать (какие методы, классы и т.д.), сейчас мне жизненно необходима. Рассчитываю на твою помощь. Значит проблема такова: Во входном файле формата JPEG нарисован прямоугольный треугольник с углом 30° (как показано на рисунке). В треугольнике есть какой-то рисунок. И нужно отразить этот треугольник, как показано на рисунке и вывести это на экран (хоть в Picturebox) или сохранить в файл. Естественно, координаты этого треугольника и прочее мне будет известно. рисунок http://img24.imageshack.us/img24/3250/46222836.jpg |
Ответы | Всего ответов: 8 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 13.03.09 14:46 |
Картинка не открывается, но если даны координаты, то в чем вообще проблема? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: - Вопросов: 5 Ответов: 17 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 13.03.09 14:59 |
но как выделить треугольник/многоугольник, чтобы его потом куда-нибудь или в пикчур-бокс, или в файл сразу?
я что-то не дорубаю(( |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ICQ: - Вопросов: 5 Ответов: 17 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 13.03.09 15:50 |
как бы я криво что-то описал проблему ((
проблема не в том, чтобы открыть или сохранить картинку. проблема в том, чтобы из объекта bitmap вытащить часть в форме треугольника и вставить сюда же отраженную. не по точкам же в цикле это делать через GetPixel и SetPixel!!! |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #4 | Добавлено: 13.03.09 16:38 |
Памидорко пишет:
проблема в том, чтобы из объекта bitmap вытащить часть в форме треугольника У Bitmap есть метод Clone, который вернет тебе указанную тобой часть исходного изображения. Если есть координаты то тебе останется только рассчитать прямоуголник в который вписана твоя фигура. Памидорко пишет:
вставить сюда же отраженную. Испльзуя System.Drawing.Image.RotateFlip(System.Drawing.RotateFlipType) ты можешь повернуть,отразить и сделать с картинкой что угодно.. а вставить сюда же, тоже достаточно просто.. Используя Graphics.FromImage получаешь из исходной картинки контекст для рисования и накладываешь туда свою отраженную часть. Затем все это дело просто выгружаешь в PictureBox и всех делов.. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #5 | Добавлено: 13.03.09 17:45 |
Если тебе знакомо понятие афинные пребразования то у Graphics есть свойство Matrix, которое так же позволяет манипулировать изображением.. вращать,искажать,сдвигать,маштабировать и т.д. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: - Вопросов: 5 Ответов: 17 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 13.03.09 19:40 |
Clone, System.Drawing.Image.RotateFlip(System.Drawing.RotateFlipType) [я их знал], с помощью этих методов не получится. изображение наложится само на себя, там ведь белая, а не прозрачная часть =(
Если есть координаты то тебе останется только рассчитать прямоуголник в который вписана твоя фигура.
А нет никакого варианта, чтобы не прямоугольник, а другой многоугольник, я слышал что-то о таких штуках, которые называются полигоны и используются в 3D графике, но есть ли уже готовые методы, чтобы что-то мутить и поможет ли мне это - вот вопрос... Graphics есть свойство Matrix - спасибо, это что-то новенькое! картинку сейчас можно посмотреть тут: http://iichan.ru/s/res/10925.html |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #7 | Добавлено: 13.03.09 20:12 |
Памидорко пишет:
там ведь белая, а не прозрачная часть это фигня.. тебе ничто не мешает белый заменить на прозрачный... а потом когда все будет сливать в одно целове сделать белую основу. Памидорко пишет:
А нет никакого варианта, чтобы не прямоугольник, а другой многоугольник, Используя System.Drawing.Graphics.SetClip (и его перегрузки) ты сможешь "вырезать" любую форму какая только тебе в голову придет(звездочку,эллипс, или вообще бессвязную фигуру.. главное условие - чтобы она была замкнутая). Это что то отдаленно напоминающее маску.. Памидорко пишет:
я слышал что-то о таких штуках, которые называются полигоны и используются в 3D графике Если надо что то более сложное то ковыряй DirectX, в .net есть классы-обертки для работы с этими вещами.. з.ы. если у тебя еденичная задача конкретно с этими треугольниками, то тут можно и Graphics обойтись, а если это какая то динамическая задача по размножению треугольников и других фигур, то тут все несколько сложнее.. |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #8 | Добавлено: 14.03.09 10:28 |
EROS пишет:
Если надо что то более сложное то ковыряй DirectX, в .net есть классы-обертки для работы с этими вещами.. XNA |
Страница: 1 |
|