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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2016, 09:36   #11
warsmit
Новичок
Джуниор
 
Регистрация: 14.04.2016
Сообщений: 1
По умолчанию

Я сталкивался с такой проблемой
Возможно изобрёл велосипед, возможно правильное решение
Скопипастю свой ответ с другого ресурса

"Хахахха, расписывал расписывал, и увидел что автор на С++ хотел ответ.
В общем мой быдлокод на С# написан. Если вдруг кто будет переделывать на С++ скидывайте суда.

Немножко своего быдлокода
ЗЫ: проблема решена по крайней мере

Код:
namespace Project
{
    public partial class Form1 : Form
    {
///////////////////этот кусок кода для получения РЕАЛЬНЫХ координат приложения/////////////////////////////
        int realCoordApp_X;
        int realCoordApp_Y;
 
        public void setRealCoordApp(Control control)
        {
            realCoordApp_X = control.Size.Width;
            realCoordApp_Y = control.Size.Height;
        }
 
        public int getRealCoordApp_X()
        {
            return realCoordApp_X;
        }
 
        public int getRealCoordApp_Y()
        {
            return realCoordApp_Y;
        }
//////////////////////////////////////////////////////////////////////////////////
        public void OneForm_Resize(object sender, EventArgs e)//здесь происходит изменение размеров PictureBox при изменении размера приложения
        {
            Control control = (Control)sender;
            setRealCoordApp(control);
 
            getCoordinatesPictureBox();
        }
 
        public void OneForm_Load(object sender, EventArgs e)//загрузка PictureBox при запуске приложения
        {
            Control control = (Control)sender;
            setRealCoordApp(control);
 
            loadingPictureBox();
            getCoordinatesPictureBox();
        }
 
        public void loadingPictureBox()//чтобы не копировать код в OneForm_Load и в OneForm_Resize
        {
            pictureBox1.Image = Properties.Resources.OneScrollBoxOnePicBox;
            pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
        }
 
         public void getCoordinatesPictureBox()
        {
            getRealPicBox(pictureBox1, getRealCoordApp_X(), getRealCoordApp_Y(), coordOnePicBox.X, coordOnePicBox.Y, getSize.PicBox);
        }
 
////////////////////эту функцию мы вызываем в OneForm_Resize и OneForm_Load, она принимает реальные размеры приложения и создаём PictureBox. 
////////////////////Если эту функцию убрать из OneForm_Resize , то изменения не будет//////////////////////////////
        public void getRealPicBox(PictureBox pictureBox, int coordX, int coordY, double coordPicBox_X, double coordPicBox_Y, double sizePicBox)
        {
            Point actualCoordinatesPicBox = new Point((int)(coordX * coordPicBox_X), (int)(coordY * coordPicBox_Y));
            Size actualSizePicBox = new Size((int)(coordX * sizePicBox), (int)(coordY * sizePicBox));
 
            pictureBox.Location = actualCoordinatesPicBox;
            pictureBox.Size = actualSizePicBox;
        }
coordPicBox_X, coordPicBox_Y, sizePicBox значения этих переменных ставите относительно целой единицы. не понятно наверно.
как было у меня:
Код:
public struct coordOnePicBox
internal double X = 0.02;
internal double Y = 0.05;
 
public struct coordTwoPicBox
internal double X = 0.5;
internal double Y = 0.05;
 
public struct getSize
internal double PicBox = 0.4;
эти структуры прописаны в классе и я дёргал их для всех form приложения
единственный момент
копируя функцию OneForm_Resize в свой код проверьте в файл Form1.Designer.cs наличие этой строчки
Код:
this.Resize += new System.EventHandler(this.OneForm_Resize);
Функцию изменения размеров PictureBox можно переделать под Button, просто поменяв аргумент в функции."

______________________
Используйте тег [CODE] (кнопка с решеткой # в форме сообщения) при вставке кода на форум.

Последний раз редактировалось Alex11223; 16.05.2016 в 09:42.
warsmit вне форума Ответить с цитированием
Старый 16.05.2016, 11:03   #12
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
"Хахахха, расписывал расписывал, и увидел что автор на С++ хотел ответ.
В общем мой быдлокод на С# написан. Если вдруг кто будет переделывать на С++ скидывайте суда.
для меня загадка где вы тут С++ увидели.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
си# winform Мадлен Помощь студентам 2 14.12.2015 06:06
классы в си #( winform) Мадлен Помощь студентам 2 05.05.2015 16:54
C# winForm LeNZZZ08 C# (си шарп) 0 06.11.2014 10:15
MySQL+ WinForm C# Rino256 SQL, базы данных 3 24.05.2014 16:21
подключение БД к winform c++ Nitrino Visual C++ 0 16.04.2011 02:10