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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2011, 00:53   #1
Fintroll
 
Регистрация: 14.02.2009
Сообщений: 5
По умолчанию PaintBox

Заданные мною фигуры не отображаются в PictureBox'е.
В чём проблема понять никак не могу, помогите пожалуйста разобраться.
Полный исходник в аттаче.

Код:
//Form1.cs
 
namespace WindowsFormsApplication6
{
    public partial class Form1 : Form
    {
        Square [ ] sqr = new Square [ 3 ];
        
        
        public Form1 ( )
        {
            InitializeComponent ( );
        }
 
        private void Form1_Load ( object sender , EventArgs e )
        {
            sqr [ 0 ] = new Square ( 50 , 100 , pictureBox1 );
            for ( int i = 0 ; i < 3 ; i++ )
            {
                sqr [ i ].SetColor ( 12 , 155 , 9 );
                sqr [ i ].Resize ( 25 );
            }
            dataGridView1.RowCount = 5;
            dataGridView1.Rows [ 0 ].Cells [ "Param" ].Value = "X-Координата";
            dataGridView1.Rows [ 1 ].Cells [ "Param" ].Value = "Y-Координата";
            dataGridView1.Rows [ 2 ].Cells [ "Param" ].Value = "Угол поворота";
            dataGridView1.Rows [ 3 ].Cells [ "Param" ].Value = "Размер";
            dataGridView1.Rows [ 4 ].Cells [ "Param" ].Value = "Цвет";
        }
 
 
        private void outputValues (Square _sqr)
        {
            try
            {
                dataGridView1.Rows [ 0 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetX ( ) );
                dataGridView1.Rows [ 1 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetY ( ) );
                dataGridView1.Rows [ 2 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetAngle ( ) );
                dataGridView1.Rows [ 3 ].Cells [ "Value" ].Value = Convert.ToString ( _sqr.GetSize ( ) );
                dataGridView1.Rows [ 4 ].Cells [ "Value" ].Value = _sqr.GetColor ( ).ToString ( );
            }
            catch ( Exception ex )
            {
                MessageBox.Show ( ex.Message );
            }
        }
        private void pictureBox1_Click ( object sender , EventArgs e )
        {
            for (int i=0; i<3; i++)
            {
                Square ps = sqr[i];
                float X = ps.GetX();
                float Y = ps.GetY();
                float size = ps.GetSize();
                float x1 = X - size / 2;
                float x2 = X + size / 2;
                float y1 = Y - size / 2;
                float y2 = Y + size / 2;
                if ( ( X >= x1 ) && ( X <= x2 ) && ( Y >= y1 ) && ( Y <= y2 ) )
                {
                    Square.Activated = ps;
                    pictureBox1.Invalidate();
                    return;
                }
            }
            Square.Activated = null;
            pictureBox1.Invalidate ( );
        }
 
        private void button1_Click ( object sender , EventArgs e )     //Задание Цвета
        {
            if (colorDialog1.ShowDialog ( ) == DialogResult.OK)
            {
                button1.BackColor = colorDialog1.Color;
                Square.Activated.SetColor ( colorDialog1.Color.R , colorDialog1.Color.G , colorDialog1.Color.B );
            }
            
        }
 
        private void btnMoveLeft_Click ( object sender , EventArgs e )
        {
            Square.Activated.Move ( -10 , 0 );
            outputValues ( Square.Activated );
            
        }
 
        private void btnMoveUp_Click ( object sender , EventArgs e )
        {
            Square.Activated.Move ( 0 , 10 );
            outputValues ( Square.Activated );
            
        }
        private void PaintBox_Draw ( object sender , PaintEventArgs e )
        {
            for ( int i = 0 ; i < 3 ; i++ ) 
            {
                sqr [ i ].Draw ( );
            }
        }
    }
}
Вложения
Тип файла: rar WindowsFormsApplication6.rar (4.75 Мб, 7 просмотров)

Последний раз редактировалось Fintroll; 11.04.2011 в 01:09.
Fintroll вне форума Ответить с цитированием
Старый 11.04.2011, 01:01   #2
Fintroll
 
Регистрация: 14.02.2009
Сообщений: 5
По умолчанию

Код:
//Модуль с описанием класса
//ClassLibrary.cs
 
namespace SquareClassLibrary
{
    public partial class Square
    {
 
        float xCoord;
        float yCoord;
        float Angle;
        float Size = 40;
        Graphics obj;
        Pen drawPen = new System.Drawing.Pen ( Color.Blue, 4F );
        Color squareColour = new System.Drawing.Color ( );
        PointF [ ] squareCoordinates = new PointF [ 4 ];
        public System.Windows.Forms.PictureBox pictureBox = new System.Windows.Forms.PictureBox ( );
        public static Square Activated = null;
        public Square ( float x , float y, System.Windows.Forms.PictureBox pictureBox)
        {
            xCoord = x;
            yCoord = y;
        }
        public void Move ( float dx , float dy )
        {
            xCoord += dx;
            yCoord += dy;
        }
        public void Rotate ( float ang )
        {
            Angle += ang;
        }
        public void Resize ( float sz )
        {
            Size += sz;
        }
        public void SetColor ( int Red , int Green , int Blue )
        {
            squareColour = Color.FromArgb ( Red , Green , Blue );
        }
        public float GetX ( )
        {
            return xCoord;
        }
        public float GetY ( )
        {
            return yCoord;
        }
        public float GetAngle ( )
        {
            return Angle;
        }
        public float GetSize ( )
        {
            return Size;
        }
        public Color GetColor ( )
        {
            return squareColour;
        }
        public void Draw ( )
        {
            squareCoordinates [ 0 ].X = Size / 2;
            squareCoordinates [ 0 ].Y = Size / 2;
            squareCoordinates [ 1 ].X = Size / 2;
            squareCoordinates [ 1 ].Y = -Size / 2;
            squareCoordinates [ 2 ].X = -Size / 2;
            squareCoordinates [ 2 ].Y = -Size / 2;
            squareCoordinates [ 3 ].X = -Size / 2;
            squareCoordinates [ 3 ].Y = Size / 2;
 
            double rotX , rotY;
 
            for ( int i = 0 ; i < 4 ; i++ )
            {
                rotX = squareCoordinates [ i ].X * Math.Cos ( Angle * Math.PI / 180 ) - squareCoordinates [ i ].Y * Math.Sin ( Angle * Math.PI / 180 );
                rotY = squareCoordinates [ i ].Y * Math.Cos ( Angle * Math.PI / 180 ) + squareCoordinates [ i ].X * Math.Sin ( Angle * Math.PI / 180 );
                squareCoordinates [ i ].X = Convert.ToSingle ( xCoord + rotX );
                squareCoordinates [ i ].Y = Convert.ToSingle ( yCoord + rotY ); 
            }
 
            obj = pictureBox.CreateGraphics ( );
            //System.Drawing.Brush br = new System.Drawing.SolidBrush ( squareColour );
            drawPen.Color = squareColour;
            drawPen.Width = 4F;
            obj.DrawPolygon ( drawPen , squareCoordinates );
            if ( this == Activated )
            {
                float x1 = xCoord - Size;
                float x2 = xCoord + Size;
                float y1 = yCoord - Size;
                float y2 = yCoord + Size;
                obj.DrawEllipse(drawPen, x1,y1,x2,y2); 
            }
        }
    }
}
Fintroll вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PaintBox _-Re@l-_ Общие вопросы Delphi 11 23.06.2010 12:54
Вопрос по PaintBox rainbow Общие вопросы Delphi 1 07.04.2010 11:21
Paintbox lacost Мультимедиа в Delphi 3 14.01.2009 09:53
paintbox steck Общие вопросы Delphi 5 28.10.2007 16:15