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

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

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > WPF, UWP, WinRT, XAML
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.06.2011, 12:43   #1
LENA_M
Пользователь
 
Регистрация: 24.04.2009
Сообщений: 98
По умолчанию Изменение масштабов изображения

Добрый день!
У меня проблема...
Я написала программу, которая рисует график на форме. Рисование функции происходит в отдельном классе, а в форме идёт ссылка на на класс.
Но к этому мне нужно добавить:
1. кнопку Redraw, которая должна рисовать тот же гравик, но после изменения размеров окна
2. событие Mouse drag right- которое должно изменять масштаб изображение.
Поскольку функция (cos(x)+ sin(x)), у меня написаны в отдельном классе, я не знаю как мне код написать к кнопке и событию...
Помогите, если кто то знает как это сделать!
Вот код формы :
Код:
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 isoline4
{
    public partial class Form1 : Form
    {

        public Form1()
        {
            InitializeComponent();
            GraphicsImageGenerator g = new GraphicsImageGenerator();
        }

        protected bool dragging = false;
        protected bool dragged = false;

        protected int lastX, lastY;

        private void buttonRedraw_Click(object sender, EventArgs e)
        {
            //redraw();
        }

        private void buttonSave_Click(object sender, EventArgs e)
        {

        }

        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {

        }



        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {

        }

        private void buttonReset_Click(object sender, EventArgs e)
        {

        }

        private void comboFunction_SelectedIndexChanged(object sender, EventArgs e)
        {

        }


        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

            Bitmap bitmap = new GraphicsImageGenerator().Bitmap;
            pictureBox1.Image = bitmap;
        }



        private void ResetScale_Click(object sender, EventArgs e)
        {

        }

        private void SaveImage_Click(object sender, EventArgs e)
        {

        }

        private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        private void labelElapsed_Click(object sender, EventArgs e)
        {

        }

        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {

        }


    }
   }
А это класс, который рисует график:
Код:
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;

namespace isoline4
{
    internal class GraphicsImageGenerator
    {
        public GraphicsImageGenerator()
        {
            const double minXY = 0;
            const double maxXY = Math.PI * 2;
            const double e = 0.01;
            double intervalXY = maxXY - minXY;
            Bitmap = new Bitmap(400, 400);
            double[] levels = { -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75, 1 };
            for (int i = 0; i < Bitmap.Width; i++)
            {
                for (int j = 0; j < Bitmap.Height; j++)
                {
                    for (int k = 0; k < levels.Length; k++)
                    {
                        double x = minXY + intervalXY * i / Bitmap.Width;
                        double y = minXY + intervalXY * j / Bitmap.Height;
                        double zn = Z(x, y);
                        if (zn >= levels[k] - e && zn <= levels[k] + e)
                        {
                            var c = (int)(255 * Math.Abs(zn - levels[k]) / e);
                            Bitmap.SetPixel(i, Bitmap.Height - j - 1, Color.FromArgb(c, c, c));
                        }
                    }
                }
            }
        }
        public Bitmap Bitmap { get; private set; }
        private static double Z(double x, double y)
        {
            return Math.Sin(x) * Math.Cos(y);
        }
    }
}
Заранее спасибо
LENA_M вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение размера изображения voron.kz Общие вопросы Delphi 2 06.09.2010 08:15
Запретить изменение фонового изображения Скарам Общие вопросы .NET 11 28.07.2010 12:26
Изменение изображения при наведении мышки? lionman Общие вопросы Delphi 24 12.06.2010 13:03
Изменение вида увелич. изображения highslide в DLE 8.2 alkatran WordPress и другие CMS 2 04.09.2009 15:49
Качественное изменение размера изображения... Dr. MefistO Мультимедиа в Delphi 5 15.07.2009 17:22