Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Графика Добавлено: 13.03.09 14:34  

Автор вопроса:  Памидорко | Web-сайт: 2hl.net.ru | ICQ:


    Уважаемый читатель, я, одинадцатиклассник-быдлокодер попал впросак из-за незнания, да и просто неумения найти информацию.

    Если ты хоть что-то знаешь о работе с графикой в 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-сайт: sharpc.livejournal.com
 Профиль | | #1
Добавлено: 13.03.09 14:46
Картинка не открывается, но если даны координаты, то в чем вообще проблема?

Ответить

Номер ответа: 2
Автор ответа:
 Памидорко



ICQ:

Вопросов: 5
Ответов: 17
 Web-сайт: 2hl.net.ru
 Профиль | | #2
Добавлено: 13.03.09 14:59
но как выделить треугольник/многоугольник, чтобы его потом куда-нибудь или в пикчур-бокс, или в файл сразу?

я что-то не дорубаю((

Ответить

Номер ответа: 3
Автор ответа:
 Памидорко



ICQ:

Вопросов: 5
Ответов: 17
 Web-сайт: 2hl.net.ru
 Профиль | | #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-сайт: 2hl.net.ru
 Профиль | | #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
EROS пишет:
Если надо что то более сложное то ковыряй DirectX, в .net есть классы-обертки для работы с этими вещами..

XNA

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам