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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.03.2015, 11:22   #1
Denis_Mishin
Новичок
Джуниор
 
Регистрация: 15.03.2015
Сообщений: 9
По умолчанию Пропорциональное увеличение рисунка в форме

Панель привязана к форме нужно чтобы при увеличении формы рисунок пропорционально увеличивался
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

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

        private void button1_Click(object sender, EventArgs e)
        {
    
            Graphics gPanel = panel1.CreateGraphics();

            Pen p = new Pen(Color.Black, 1);
            
   
            gPanel.DrawLine(p, new Point(55, 30), new Point(35, 20));
            gPanel.DrawLine(p, new Point(35, 20), new Point(65, 55));
            gPanel.DrawLine(p, new Point(65, 55), new Point(75, 45));
            gPanel.DrawLine(p, new Point(75, 45), new Point(90, 65));
            gPanel.DrawLine(p, new Point(90, 65), new Point(105, 40));
           
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            panel1.Dock = DockStyle.Fill;
        }
    }
}
_____
не забывайте форматировать код тегами!
Модератор

Последний раз редактировалось Denis_Mishin; 17.03.2015 в 11:30.
Denis_Mishin вне форума Ответить с цитированием
Старый 17.03.2015, 11:48   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну дык и используйте не жестко заданые размеры, а в зависимости от размера панели и т.п. (и перерисовывать видимо надо в соответствующем событии, а не 1 раз по клику)

В чем конкретно проблема? Что пробовали?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.03.2015, 12:04   #3
Denis_Mishin
Новичок
Джуниор
 
Регистрация: 15.03.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Ну дык и используйте не жестко заданые размеры, а в зависимости от размера панели и т.п. (и перерисовывать видимо надо в соответствующем событии, а не 1 раз по клику)

В чем конкретно проблема? Что пробовали?
я просто не имею понятия как это зделать;
Denis_Mishin вне форума Ответить с цитированием
Старый 17.03.2015, 12:17   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Так написал как, считайте координаты в зависимости от размера панели.
И скорее всего перерисовывать надо в каком-нибудь событии типа SizeChanged, чтобы изменялось сразу при изменении размера.

Если вы сами ничего не делаете для решения свой проблемы, а только выложили на форум и ждете решения, то маловероятно, что вам кто-то поможет бесплатно.
Выкладывайте попытки, задавайте конкретные вопросы.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.03.2015, 12:32   #5
Denis_Mishin
Новичок
Джуниор
 
Регистрация: 15.03.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
Так написал как, считайте координаты в зависимости от размера панели.
И скорее всего перерисовывать надо в каком-нибудь событии типа SizeChanged, чтобы изменялось сразу при изменении размера.

Если вы сами ничего не делаете для решения свой проблемы, а только выложили на форум и ждете решения, то маловероятно, что вам кто-то поможет бесплатно.
Выкладывайте попытки, задавайте конкретные вопросы.
можно пожалуйста немного по подробней считать координаты в зависимости от размера панели. Я пробовал вот так но получилась както не очень

private void button1_Click(object sender, EventArgs e)
{

const int x = 200, y = 200;
int dx, dy;
dx = (this.panel1.Width) / x;
dy = (this.panel1.Height) / y;
Graphics gPanel = panel1.CreateGraphics();

Pen p = new Pen(Color.Black, 1);


gPanel.DrawLine(p, new Point(55*dx, 30*dy), new Point(35*dx, 20*dy));
gPanel.DrawLine(p, new Point(35*dx, 20*dy), new Point(65*dx, 55*dy));
gPanel.DrawLine(p, new Point(65*dx, 55*dy), new Point(75*dx, 45*dy));
gPanel.DrawLine(p, new Point(75*dx, 45*dy), new Point(90*dx, 65*dy));
gPanel.DrawLine(p, new Point(90*dx, 65*dy), new Point(105*dx, 40*dy));


}

private void panel1_Paint(object sender, PaintEventArgs e)
{
panel1.Dock = DockStyle.Fill;

}
Denis_Mishin вне форума Ответить с цитированием
Старый 17.03.2015, 13:09   #6
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

В Paint не нужно Dock изменять, достаточно 1 раз в самом начале (при запуске программы, так что, например, просто в дизайнере формы можете это выставить).
В Paint скорее само рисование поместить нужно, а то у вас сейчас рисунок пропадет, например, если свернуть/развернуть форму.

И перед рисованием еще убирать предыдущее нарисованое надо, например, так:
Код:
gPanel.Clear(Color.White);
А насчет алгоритма вычисления координат, ну это от того, что рисуете, зависит.

Я не очень понял что вы там рисуете, вот пример какой-нибудь простой фигуры:
Код:
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gPanel = panel1.CreateGraphics();

            Pen p = new Pen(Color.Black, 1);

            gPanel.Clear(Color.White);

            gPanel.DrawLine(p, new Point(10, 10), new Point(panel1.Width / 2, panel1.Height - 10));
            gPanel.DrawLine(p, new Point(panel1.Width / 2, panel1.Height - 10), new Point(panel1.Width - 10, 10));
            gPanel.DrawLine(p, new Point(panel1.Width - 10, 10), new Point(10, 10));
        }

        private void panel1_SizeChanged(object sender, EventArgs e)
        {
            panel1.Invalidate();
        }
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 17.03.2015, 13:41   #7
Denis_Mishin
Новичок
Джуниор
 
Регистрация: 15.03.2015
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Alex11223 Посмотреть сообщение
В Paint не нужно Dock изменять, достаточно 1 раз в самом начале (при запуске программы, так что, например, просто в дизайнере формы можете это выставить).
В Paint скорее само рисование поместить нужно, а то у вас сейчас рисунок пропадет, например, если свернуть/развернуть форму.

И перед рисованием еще убирать предыдущее нарисованое надо, например, так:
Код:
gPanel.Clear(Color.White);
А насчет алгоритма вычисления координат, ну это от того, что рисуете, зависит.

Я не очень понял что вы там рисуете, вот пример какой-нибудь простой фигуры:
Код:
        private void panel1_Paint(object sender, PaintEventArgs e)
        {
            Graphics gPanel = panel1.CreateGraphics();

            Pen p = new Pen(Color.Black, 1);

            gPanel.Clear(Color.White);

            gPanel.DrawLine(p, new Point(10, 10), new Point(panel1.Width / 2, panel1.Height - 10));
            gPanel.DrawLine(p, new Point(panel1.Width / 2, panel1.Height - 10), new Point(panel1.Width - 10, 10));
            gPanel.DrawLine(p, new Point(panel1.Width - 10, 10), new Point(10, 10));
        }

        private void panel1_SizeChanged(object sender, EventArgs e)
        {
            panel1.Invalidate();
        }
спасибо очень помогло, с треугольником я по мойму разобрался только не приходит в голову как так с моими линиями это зделать
Denis_Mishin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Движения рисунка по форме Drake07 C# (си шарп) 4 01.12.2013 19:30
Пропорциональное изменение масштаба автофигуры Denis0n Microsoft Office Excel 1 23.12.2012 12:28
пропорциональное изменение элементов формы vladis222 Общие вопросы Delphi 2 20.07.2012 11:49
Увеличение ширины Image без растягивания рисунка artemavd Общие вопросы Delphi 20 28.01.2011 17:40
Пропорциональное увеличение Роман Радер Мультимедиа в Delphi 1 02.04.2007 12:22