Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поворот изображения в С#, Как повернуть изображение в С# 
:(
    Опции темы
Killerman
  Дата 26.10.2007, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Подскажите как повернуть в C# изображение, скажем на 15%.

PM MAIL   Вверх
zkv
Дата 26.10.2007, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: нет
Всего: 92



Переместил из  Visual C++/MFC/WTL.
PM MAIL   Вверх
Remember
Дата 26.10.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 63
Регистрация: 25.2.2007
Где: Самара

Репутация: нет
Всего: 1



Цитата(Killerman @ 26.10.2007,  13:08)
Подскажите как повернуть в C# изображение, скажем на 15%.

На 15% процентов чего?
2D или 3D?
PM MAIL   Вверх
juravel
Дата 27.10.2007, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 32
Регистрация: 18.12.2006

Репутация: нет
Всего: нет



по-моєму, через RotateFlip
чо-то такое:
Код

System.Drawing.Bitmap bit = new Bitmap("img.jpg"); 
            RotateFlipType rt = new RotateFlipType();
            bit.RotateFlip(rt);

PM MAIL   Вверх
Bogdan1024
Дата 28.10.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



juravel, это товарищу не подходит, твой метод вращает только на градусы, кратные 90.
Нужно использовать текстурную закраску с помощью System.Drawing.TextureBrush:
Код

            System.Drawing.Bitmap bmp = new Bitmap(@"Bitmap1.bmp");//Загружаем изображение.
            System.Drawing.TextureBrush tb = new System.Drawing.TextureBrush(bmp);     //Создаём кисть из изображения.           
            tb.RotateTransform(r.Next(360)); //Указываем угол поворота изображения
//Дальше рисуем где хотим.




--------------------
user posted image
PM MAIL   Вверх
VisualProgrammerNET
Дата 29.10.2007, 01:42 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Почётный халявщик
**


Профиль
Группа: Участник
Сообщений: 461
Регистрация: 30.10.2005
Где: Зеленоград

Репутация: 4
Всего: 6



Ну вы тут махинации устроили =)

Тупо Graphics.RotateTransform(float angle) и дальше рисуй чё угодно.  smile 


--------------------
3 ГОДА НА user posted image 
PM MAIL ICQ   Вверх
Killerman
  Дата 29.10.2007, 18:06 (ссылка)  | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Спасибо. Я попробовал метод Bogdan1024 через текстуру, но она не вписывается автоматически в размер квадрата, который я поворачиваю. 
А VisualProgrammerNET, ваш метод работает, но изображение опять же не изменяется. Как можно вписать изображение (bmp) в квадрат заданных размеров, меньших или больших изображения , чтобы изображение было полностью в квадрате( и поворачивалось с ним потом)?
PM MAIL   Вверх
Killerman
  Дата 29.10.2007, 18:24 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 137
Регистрация: 26.10.2007

Репутация: нет
Всего: нет



Я так понял изменять размер браша в соответствии с заданным квадратом? у меня получился вот такой вот код:

Код

System.Drawing.Bitmap bmp = new Bitmap(@"Bitmap1.bmp");//Загружаем изображение.
bmp.SetResolution(x, y);  // устанавливаем разрешение изображения в соответствии с квадратом

System.Drawing.TextureBrush tb = new System.Drawing.TextureBrush(bmp);     //Создаём кисть из изображения.

graphicsObject.RotateTransform(15); // поворачиваем объект графики
graphicsObject.FillRectangle(tb, rect); // рисуем rect - наш квадрат


Работает. но можно как то более, ну я не знаю, без кисти, а рисунок напрямую.  smile 



PM MAIL   Вверх
Experimenter
Дата 30.10.2007, 19:42 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 430
Регистрация: 8.5.2007
Где: Уфа

Репутация: 8
Всего: 17



По Петцольду:
Код

Graphics g;
g.DrawImage(Image.FromFile("myjpg.jpg"), new Point[] {new Point(x / 2, 0), new Point(x, y / 2), new Point(0, y / 2)});
//где x и y - ширина и высота клиентской части формы

минус в том, что координаты высчитывать надо.

Это сообщение отредактировал(а) Experimenter - 30.10.2007, 19:54


--------------------
public Zlo FromTwoEvilsChooseSmaller(Zlo zlo1, Zlo zlo2){
    if(zlo1 < zlo2) return zlo1;
    else if(zlo1 > zlo2) return zlo2;
    else throw new Exception("Kill yourself by the wall"); }
PM WWW ICQ   Вверх
Kolban
Дата 26.7.2014, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.7.2014

Репутация: нет
Всего: нет



Может это твой случай:
Код

PictureBox pb = new PictureBox();
Image im = new Bitmap("(путь)");
pb.BackgroundImageLayout = ImageLayout.Stretch; //Подгон BackgroundImage под размер PictureBox
//код с поворотом картинки
pb.BackgroundImage = im;

Работает со всеми элементами управления, которые имеют свойство BackgroundImageLayout. (Panel, button и другие)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0742 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.