Страница: 1 |
Страница: 1 |
Вопрос: Графика
Добавлено: 13.03.09 14:34
Автор вопроса: Памидорко | Web-сайт:
Уважаемый читатель, я, одинадцатиклассник-быдлокодер попал впросак из-за незнания, да и просто неумения найти информацию.
Если ты хоть что-то знаешь о работе с графикой в Visual Studio 2005 (что угодно из Visual Basic, C#, C++, J#), то постарайся помочь мне.
Любая информация, например, как прописать хоть что-нибудь, что искать (какие методы, классы и т.д.), сейчас мне жизненно необходима.
Рассчитываю на твою помощь.
Значит проблема такова:
Во входном файле формата JPEG нарисован прямоугольный треугольник с углом 30° (как показано на рисунке).
В треугольнике есть какой-то рисунок.
И нужно отразить этот треугольник, как показано на рисунке и вывести это на экран (хоть в Picturebox) или сохранить в файл. Естественно, координаты этого треугольника и прочее мне будет известно.
рисунок
http://img24.imageshack.us/img24/3250/46222836.jpg
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
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
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #4
Добавлено: 13.03.09 16:38
проблема в том, чтобы из объекта bitmap вытащить часть в форме треугольника
У Bitmap есть метод Clone, который вернет тебе указанную тобой часть исходного изображения. Если есть координаты то тебе останется только рассчитать прямоуголник в который вписана твоя фигура.
вставить сюда же отраженную.
Испльзуя System.Drawing.Image.RotateFlip(System.Drawing.RotateFlipType) ты можешь повернуть,отразить и сделать с картинкой что угодно..
а вставить сюда же, тоже достаточно просто.. Используя Graphics.FromImage получаешь из исходной картинки контекст для рисования и накладываешь туда свою отраженную часть. Затем все это дело просто выгружаешь в PictureBox и всех делов..
Номер ответа: 5
Автор ответа:
EROS
Вопросов: 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
Автор ответа:
EROS
Вопросов: 58
Ответов: 4255
Профиль | | #7
Добавлено: 13.03.09 20:12
там ведь белая, а не прозрачная часть
это фигня.. тебе ничто не мешает белый заменить на прозрачный... а потом когда все будет сливать в одно целове сделать белую основу.
А нет никакого варианта, чтобы не прямоугольник, а другой многоугольник,
Используя System.Drawing.Graphics.SetClip (и его перегрузки) ты сможешь "вырезать" любую форму какая только тебе в голову придет(звездочку,эллипс, или вообще бессвязную фигуру.. главное условие - чтобы она была замкнутая). Это что то отдаленно напоминающее маску..
я слышал что-то о таких штуках, которые называются полигоны и используются в 3D графике
Если надо что то более сложное то ковыряй DirectX, в .net есть классы-обертки для работы с этими вещами..
з.ы. если у тебя еденичная задача конкретно с этими треугольниками, то тут можно и Graphics обойтись, а если это какая то динамическая задача по размножению треугольников и других фигур, то тут все несколько сложнее..
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 14.03.09 10:28
Если надо что то более сложное то ковыряй DirectX, в .net есть классы-обертки для работы с этими вещами..
XNA