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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.06.2012, 12:59   #1
maxcroud
 
Регистрация: 17.06.2012
Сообщений: 5
Вопрос Что я не правильно делаю в функции поворота изображения

Здравствуйте, я новичок на этом форуме и в программировании на C#. Пытаюсь сделать функцию поворота изображения на определенное кол-во градусов, смотрел материалы для C++ на этом форуме. Код получился вроде бы без ошибок, компилятор не ругается, но ничего не отрисовывается, помогите найти что я не правильно сделал, заранее спасибо!
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        public Image rotate(Image image, double degree)
        {
            double[][] matrix = new double[1][];
            Color getColor = new Color();
            Bitmap postImage = new Bitmap(image);
            Bitmap afterImage = new Bitmap(image);
            degree = 180 * degree / Math.PI;
            matrix = new double[][] { new double[] { Math.Cos(degree), -Math.Sin(degree) }, new double[] { Math.Sin(degree), Math.Cos(degree) } };
            for (int x = 0; x <= image.Width; x++)
            {
                for (int y = 0; y <= image.Height; y++)
                {
                    int newX = (int)((x - 10) * matrix[0][0] + (y - 10) * matrix[0][1] + 10);
                    int newY = (int)((x - 10) * matrix[1][0] + (y - 10) * matrix[1][1] + 10);
                    getColor = postImage.GetPixel(x, y);
                    afterImage.SetPixel(newX, newY, getColor);
                }
            }
            return afterImage;
        }

        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Point points = new Point(0, 0);
            Image image = Image.FromFile(@"C:\User\user\Рабочий стол\Загрузки\text.jpg");
            Form1.ActiveForm.CreateGraphics();
            e.Graphics.DrawImage(rotate(image, 90), points);
        }
    }
}
Использую Visual C# 2010, в проекте WindowsForm
maxcroud вне форума Ответить с цитированием
Старый 18.06.2012, 16:29   #2
maxcroud
 
Регистрация: 17.06.2012
Сообщений: 5
По умолчанию

и что правда ни кто ответа не знает?
maxcroud вне форума Ответить с цитированием
Старый 18.06.2012, 16:36   #3
muradov
Пользователь
 
Регистрация: 05.05.2012
Сообщений: 39
По умолчанию

Цитата:
Bitmap postImage = new Bitmap(image);
Bitmap afterImage = new Bitmap(image);
Почему afterImage создается на основе существующего? Нам же как минимум на этот момент неизвестны размеры получаемого изображения.
Используйте Bitmap.RotateFlip
muradov вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот изображения, матрица поворота kordax Помощь студентам 9 19.01.2012 23:21
построение графика функции. что не правильно? Irishka.k Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 23.05.2010 00:36
Что не правильно делаю с free(); Winston123 Общие вопросы C/C++ 25 15.06.2009 21:21
Процедура поворота изображения Илья PHoeNiX Общие вопросы Delphi 3 08.06.2008 13:59
правильно ли я делаю? andrey4623 Общие вопросы Delphi 2 07.03.2008 20:14