Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Поворот изображения в С#


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

Автор: zkv 26.10.2007, 15:10
Переместил из  Visual C++/MFC/WTL.

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

На 15% процентов чего?
2D или 3D?

Автор: juravel 27.10.2007, 13:27
по-моєму, через RotateFlip
чо-то такое:
Код

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

Автор: Bogdan1024 28.10.2007, 19:35
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)); //Указываем угол поворота изображения
//Дальше рисуем где хотим.


Автор: VisualProgrammerNET 29.10.2007, 01:42
Ну вы тут махинации устроили =)

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

Автор: Killerman 29.10.2007, 18:06
Спасибо. Я попробовал метод Bogdan1024 через текстуру, но она не вписывается автоматически в размер квадрата, который я поворачиваю. 
А VisualProgrammerNET, ваш метод работает, но изображение опять же не изменяется. Как можно вписать изображение (bmp) в квадрат заданных размеров, меньших или больших изображения , чтобы изображение было полностью в квадрате( и поворачивалось с ним потом)?

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

Код

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 



Автор: Experimenter 30.10.2007, 19:42
По Петцольду:
Код

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 - ширина и высота клиентской части формы

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

Автор: Kolban 26.7.2014, 00:35
Может это твой случай:
Код

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

Работает со всеми элементами управления, которые имеют свойство BackgroundImageLayout. (Panel, button и другие)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)