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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2011, 01:06   #11
Vegas
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 29
По умолчанию

Может кто-нибудь знает как переписать эту строку правильно на С#:

Image2.Canvas.Pixels[i,Image2.Height-j]:=Image1.Canvas.Pixels[ox,oy] ????
Vegas вне форума Ответить с цитированием
Старый 17.12.2011, 04:50   #12
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

Я думаю с Vb вы на C# переведете

Pic1 и Pic2 это PictureBox
Pic1-донор

Код:
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Width As Integer = Pic1.Image.Width \ 2
        Dim Height As Integer = Pic1.Image.Height \ 2
        Dim bmp As New Bitmap(Width, Height)
        Dim bmp0 As New Bitmap(Pic1.Image.Width, Pic1.Image.Height)
        bmp0 = Pic1.Image.Clone
        Dim i, j, ox, oy As Integer
        Dim alfa, aux As Double
        For i = 0 To bmp.Width - 1
            For j = 0 To bmp.Height - 1
                aux = i / bmp.Width
                alfa = -2 * Math.PI * (aux) - Math.PI / 2
                Application.DoEvents()
                ox = Math.Round(bmp.Width + j * Math.Cos(alfa))
                oy = -1 * Math.Round(j * Math.Sin(alfa) - bmp.Height)
                bmp.SetPixel(i, bmp.Height - j - 1, bmp0.GetPixel(ox, oy))
            Next
        Next
        Width = bmp.Width * 2 * Math.PI
        Dim zoomImag As New System.Drawing.Bitmap(bmp, Width, Height)
        Pic2.Image = zoomImag
    End Sub
Результат работы
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 17.12.2011, 14:53   #13
Vegas
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 29
По умолчанию

Большое спасибо за предоставленный код.
Я постарался перевести это на С#, но возникло несколько ошибок, кто знает в чем заключаются эти ошибки?


private void button2_Click(object sender, EventArgs e)
{

Bitmap bmp0 = new Bitmap(pictureBox1.Image.Size.Width , pictureBox1.Image.Size.Height);
bmp0 = (pictureBox1.Image.Clone());
int i, j, ox, oy;
double alfa, aux;
int Width = pictureBox1.Image.Size.Width / 2;
int Height = pictureBox1.Image.Size.Height / 2;
Bitmap bmp = new Bitmap(Height, Width);

for (int i = 0; i < bmp.Width - 1; i++)
{
for (int j = 0; j < bmp.Height - 1; j++)
{
aux = i / bmp.Width;
alfa = -2 * Math.PI * (aux) - Math.PI / 2;

Application.DoEvents();
ox = Convert.ToInt32(bmp.Width + j * Math.Cos(alfa));
oy = -1 * Convert.ToInt32(j * Math.Sin(alfa) - bmp.Height);
bmp.SetPixel(i, bmp.Height - j - 1, bmp0.GetPixel(ox, oy));
Width = Convert.ToInt32(bmp.Width * 2 * Math.PI);

Bitmap zoomImag = new Bitmap(bmp, Width, Height);
pictureBox2.Image = zoomImag;
}
}
}
Vegas вне форума Ответить с цитированием
Старый 17.12.2011, 17:18   #14
doober
Старожил
 
Аватар для doober
 
Регистрация: 02.05.2009
Сообщений: 3,907
По умолчанию

попробовал так,но не правильно преобразование идет
Код:
        private void button1_Click_1(object sender, EventArgs e)
        {
   Bitmap bmp0 = new Bitmap("c:\\зодиак.png");

   this.pic1.Image = bmp0;

   int Width = bmp0.Width / 2;
   int Height = bmp0.Height / 2;
            Bitmap bmp = new Bitmap(Width, Height);  
         
            int i = 0;
            int j = 0;
            int ox = 0;
            int oy = 0;
            double alfa = 0;
            double aux = 0;
            for (i = 0; i <= bmp.Width - 1; i++)
            {
                for (j = 0; j <= bmp.Height - 1; j++)
                {
                    aux = i / bmp.Width;
                    alfa = -2 * Math.PI * (aux) - Math.PI / 2;
                    Application.DoEvents();
                    ox = Convert.ToInt32(Math.Round(bmp.Width + j * Math.Cos(alfa)));
                    oy = -1 * Convert.ToInt32(Math.Round(j * Math.Sin(alfa) - bmp.Height));
                    bmp.SetPixel(i, bmp.Height - j - 1, bmp0.GetPixel(ox, oy));

                    Color ff = bmp0.GetPixel(ox, oy);

                }
            }

            Width = Convert.ToInt32(bmp.Width * 2 * Math.PI);
            System.Drawing.Bitmap zoomImag = new System.Drawing.Bitmap(bmp, Width, Height);
         this.pic2.Image = zoomImag;      
        }
      
    }
Анализ,обработка данных Недорого
doober вне форума Ответить с цитированием
Старый 17.12.2011, 17:57   #15
Vegas
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 29
По умолчанию

Спасибо. Сейчас посмотру, может найду в чем дело.
Vegas вне форума Ответить с цитированием
Старый 17.12.2011, 20:29   #16
Vegas
Пользователь
 
Регистрация: 15.04.2010
Сообщений: 29
По умолчанию

Если кто-нибудь знает в чем ошибка, почему преобразование не работает (почему всё размыто), помогите плиз.
22222.jpg
Вложения
Тип файла: rar WindowsFormsApplication2.rar (35.1 Кб, 9 просмотров)

Последний раз редактировалось Vegas; 18.12.2011 в 14:00.
Vegas вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Преобразование одномерных координат массива в двумерные координаты матрицы nikol_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 2 05.05.2011 13:16
Перевод координат ax1d Общие вопросы Delphi 1 04.11.2009 14:23
Преобразование координат системы СК-42 Македонский Общие вопросы Delphi 5 09.03.2009 14:15
Преобразование координат HunterMan Общие вопросы .NET 1 22.12.2008 15:03