Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > Общие вопросы .NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2010, 00:59   #1
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию Обрезать фото

Повернуть фото я сделал тоок не могу ево обрезать.Тоисть чтоб на какоя я градус повернул прямоугольником и обрезало.
Смотрите вложеный файл.Помогите
Все что за рамкой нада обрезать
Изображения
Тип файла: jpg fafa.jpg (30.9 Кб, 116 просмотров)
Тип файла: jpg fafa12.jpg (26.8 Кб, 110 просмотров)

Последний раз редактировалось Cpluser; 09.04.2010 в 01:11.
Cpluser вне форума Ответить с цитированием
Старый 13.04.2010, 09:01   #2
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

если использовался RotateTransform, то есть если оси уже повернуты - воспользоваться gr.TranslateTransform в центр картинки и нарисовать четыре черных прямоугольника, учитывая что 0 координат теперь в центре картинки, другого в голову не приходит...
Teksa вне форума Ответить с цитированием
Старый 13.04.2010, 10:53   #3
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

А можете привести пример кода пожалуста!
Cpluser вне форума Ответить с цитированием
Старый 15.04.2010, 08:31   #4
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

picture - исходный имейдж
Код:
 
gr.TranslateTransform((float)picture.Width / 2, (float)picture.Height / 2); // центр координат в центр битмапа
            gr.RotateTransform(Angle); // поворачиваем систему координат



            //прорисовка готового image
            gr.DrawImage(picture, new Rectangle(-(int)picture.Width / 2, -(int)picture.Height/2, (int)picture.Width, (int)picture.Height), 0, 0, picture.Width, picture.Height, GraphicsUnit.Pixel, imAttr);
            if (Death)
            {
                Pen newPen = new Pen(Color.Black, 5);
                gr.DrawLine(newPen, new Point(-picture.Width/2, -picture.Height/2), new Point(picture.Width/2, picture.Height/2));
                gr.DrawLine(newPen, new Point(-picture.Width / 2, picture.Height / 2), new Point(picture.Width / 2, -picture.Height / 2));
               
            }

             // прямоугольник,  сторны которого параллельны осям координат
            SolidBrush sb = new SolidBrush(Color.Black);
            gr.FillRectangle(sb,new Rectangle(0,0,10,50));
Вот как то так

Последний раз редактировалось Teksa; 15.04.2010 в 08:38.
Teksa вне форума Ответить с цитированием
Старый 15.04.2010, 10:40   #5
Cpluser
Форумчанин
 
Аватар для Cpluser
 
Регистрация: 16.02.2009
Сообщений: 555
По умолчанию

Спасибо!Только есть ошибки Angle , imAttr, Death что за переменные???
Cpluser вне форума Ответить с цитированием
Старый 15.04.2010, 12:58   #6
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

ну это кусок кода наживую выдернутый из процедуры Angle -угол поворота. За Death -недорезал, признак смерти иконки в том приложении вобщем:
Код:
picture = new Bitmap(@""); // путь к файлу с картинкой

Bitmap result = new Bitmap(picture.Width,picture.Height); // битмап содержащий исходное изображение с нужными трансформациями
                                                                      // трансформации:
                                                                      // поворот 
            Graphics gr = Graphics.FromImage(result);

gr.TranslateTransform((float)picture.Width / 2, (float)picture.Height / 2); // центр координат в центр битмапа
gr.RotateTransform(Angle); // поворачиваем систему координат
gr.DrawImage(picture, new Rectangle(-(int)picture.Width / 2, -(int)picture.Height/2, (int)picture.Width, (int)picture.Height), 0, 0, picture.Width, picture.Height, GraphicsUnit.Pixel, imAttr);

 int xEnd = (int)Picture.Width / 2;
            int xBegin = -xEnd;
            int yDown = (int)Picture.Height / 2;
            int yUp = -yDown;

            int w = 10;// толщина рамки
            
             
            SolidBrush sb = new SolidBrush(Color.Black);

            Size sz = new Size(Picture.Width, w);
            gr.FillRectangle(sb,new Rectangle(new Point(xBegin,yDown-w),sz));
            gr.FillRectangle(sb, new Rectangle(new Point(xBegin, yUp), sz));

            sz.Height = Picture.Height;
            sz.Width = w;

            gr.FillRectangle(sb, new Rectangle(new Point(xBegin, yUp), sz));
            gr.FillRectangle(sb, new Rectangle(new Point(xEnd-w, yUp), sz));
Вот что-то в этом роде, рамку рисует, не закрашивает рамкой углы ( обратите внимание на отрисовку прямоугольников, начальной точкой в них можно убрать этот дефект )
Teksa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как обрезать изоображение в формате jpeg KWN, lnc Мультимедиа в Delphi 5 08.03.2010 13:52
Как обрезать строку между двумя словами vitaleg PHP 3 28.07.2009 20:32
Обрезать текст до заданной длины на Ассемблере stscolt Помощь студентам 0 09.05.2009 05:51
Обрезать у файлов первые 24 байта и переименовать в соответствии со списком. Hell'ena Общие вопросы Delphi 13 12.07.2008 20:48
Image1 и Rgn.. как обрезать? Yogik™ Помощь студентам 7 28.09.2007 17:07