abuhmamm Ответов: 1

Как я могу исправить положение изображения с разным разрешением


Я использую эту функцию для рисования мультиклапанного изображения на экране но при запуске приложения в другом разрешении положение изображения меняется
приложение работает только с разрешением 1920х 1080 когда вы меняете разрешение изображение будет находиться в другом положении на экране
как я могу зафиксировать положение изображения в форме без изменения разрешения
public void xvcloseevent(object sender, PaintEventArgs e)
{
    try {
        Screen scr = Screen.PrimaryScreen;
        int temphigh = scr.Bounds.Height;
        int tempwidth = scr.Bounds.Width;

        Assembly asm = Assembly.GetExecutingAssembly();
        Stream stm = asm.GetManifestResourceStream("FirstprojectDCS.FilesProjectsDcs.xv_close.png");
        
         Bitmap xv_close = new Bitmap(stm);
        
            Stream stm2 = asm.GetManifestResourceStream("FirstprojectDCS.FilesProjectsDcs.FV_CLOSE.png");
        Bitmap Fv_close = new Bitmap(stm2);
        
        
        Stream stm3 = asm.GetManifestResourceStream("FirstprojectDCS.FilesProjectsDcs.FV_CLOSE_V_L.png");
        Bitmap Fv_close_v_l = new Bitmap(stm3);
       
        Stream stm4 = asm.GetManifestResourceStream("FirstprojectDCS.FilesProjectsDcs.FV_CLOSE _V_L2.png");
        Bitmap Fv_close_V_L2 = new Bitmap(stm4);

        Pen Mypen = new Pen(Color.Red,1);
        xv_close.SetResolution(96.0F, 96.0F);
        Fv_close.SetResolution(96.0F, 96.0F);
        Fv_close_v_l.SetResolution(96.0F, 96.0F);
        Fv_close_V_L2.SetResolution(96.0F, 96.0F);
        //  xv_close.SetResolution(96.0F, 96.0F);
// change the resultion HD resolution
     //   ResolutionChange();

        // Get Graphics Object
        Graphics g = e.Graphics;
    int sourceWidth = xv_close.Width;
    int sourceHeight = xv_close.Height;
    // Method under System.Drawing.Graphics


    if (ESD_no == 2 || ESD_no == 2013)
    {
        //label2.Visible = false;
        if (ESD_no == 2)
        {
            g.DrawString("ESD-002 action Deoxo Rx Shduwn", new Font("Verdana", 20),
        new SolidBrush(Color.Tomato), 40, 40);
        }
        else if (ESD_no == 2013)
        {
            g.DrawString("ESD-201 cause 3 	1620-XPB-023A- Deoxo Reactor Depressurizing Local Pushbutton", new Font("Verdana", 17),
            new SolidBrush(Color.Tomato), 40, 40);

            g.DrawString("ESD-201 cause 3 action Deoxo Rx Shduwn", new Font("Verdana", 17),
            new SolidBrush(Color.Tomato), 40, 70);
        }
            //xv15
        //   xcoordinate = 122- Math.Abs( 1536-(tempwidth));
          //ycoordinate =(145 -Math.Abs( (846-(temphigh))))-10;
xcoordinate = 122;// - Math.Abs(1536 - tempwidth);
        ycoordinate = 145-26;// - Math.Abs(10 - (846 - temphigh));

            g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        // g.DrawImage(Image.FromFile(@"C:\PhotoXv\xv_close.png"), new Point(xcoordinate, ycoordinate));
        //xv 001
        //xcoordinate = 238;
        //ycoordinate = 453 - 26;
        //g.DrawImage(Image.FromFile(@"C:\PhotoXv\xv_close.png"), new Point(xcoordinate, ycoordinate));
        //g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        xcoordinate = 834;
        ycoordinate = 307 - 26;
        g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        // g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);

        xcoordinate = 946;
        ycoordinate = 307 - 26;
        g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        //xv 10
        xcoordinate = 507;
        ycoordinate = 639 - 26;
        g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        //xv 12
        xcoordinate = 730;
        ycoordinate = 460 - 26;
        g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        // xv016
        xcoordinate = 1033;
        ycoordinate = 146 - 26;
        g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        //xv017
        xcoordinate = 1142;
        ycoordinate = 143 - 26;
        g.DrawImage(xv_close, xcoordinate, ycoordinate, sourceWidth, sourceHeight);
        g.DrawEllipse(Mypen, xcoordinate - 60, ycoordinate - 60, 160, 120);
        if (IntertripESD == 3)
        {// esd-00 2 intertrip esd-003 
            g.DrawString("ESD-003 intertrip with ESD-002 N2 PURGING ", new Font("Verdana",10),
   new SolidBrush(Color.DarkGreen), 1281-80, 119-90);
            xcoordinate = 1290;
            ycoordinate = 114 - 26;


Что я уже пробовал:

Я использую эту функцию для рисования мультиклапанного изображения на экране но при запуске приложения в другом разрешении положение изображения меняется

приложение работает только с разрешением 1920х 1080 когда вы меняете разрешение изображение будет находиться в другом положении на экране

как я могу зафиксировать положение изображения в форме без изменения разрешения

Gerry Schmitz

Вы не меняете "разрешение"; вы меняете "масштабирование" (или масштабирование), изменяя один из боковых размеров.

1 Ответов

Рейтинг:
0

BillWoodruff

Предполагая, что изображения вы создаете имеет соотношение сторон 16:9 (1920, 1080) ...

Создайте изображение: вставьте его в PictureBox чьи границы имеют то же самое соотношение сторон как изображение, но чей размер настраивается так, чтобы соответствовать (быть видимым в) текущему разрешению экрана, и используйте параметр перечисления "Zoom PictureBoxSizeMode" в свойстве PictureBox.SizeMode.

видеть: [^], [^], [^]