Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
ResumeLayout ändert meine Eingaben
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 33
Herkunft: Österreich

Themenstarter:

ResumeLayout ändert meine Eingaben

beantworten | zitieren | melden

Hallo liebe Community.
ich habe ein kleines Windows Forms Projekt, in dem sich eine PictureBox befindet. Ich habe ihr eine größe von 600x600 gegeben, was im Designer auch so umgesetzt wird.


this.pic_Box.Size = new System.Drawing.Size(600, 600);

Diese Größe wird aus meinerseits nicht ersichtlichen Gründen in der Methode "ResumeLayout" verändert.
Gesamte Methode "InitializeComponent":


        private void InitializeComponent()
        {
            this.gb_Settings = new System.Windows.Forms.GroupBox();
            this.pic_Box = new System.Windows.Forms.PictureBox();
            ((System.ComponentModel.ISupportInitialize)(this.pic_Box)).BeginInit();
            this.SuspendLayout();
            // 
            // gb_Settings
            // 
            this.gb_Settings.Location = new System.Drawing.Point(13, 13);
            this.gb_Settings.Name = "gb_Settings";
            this.gb_Settings.Size = new System.Drawing.Size(200, 600);
            this.gb_Settings.TabIndex = 0;
            this.gb_Settings.TabStop = false;
            this.gb_Settings.Text = "Settings";
            // 
            // pic_Box
            // 
            this.pic_Box.Location = new System.Drawing.Point(220, 13);
            this.pic_Box.Name = "pic_Box";
            this.pic_Box.Size = new System.Drawing.Size(600, 600);
            this.pic_Box.TabIndex = 1;
            this.pic_Box.TabStop = false;
            // 
            // Form1
            // 
            this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
            this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
            this.ClientSize = new System.Drawing.Size(833, 622);
            this.Controls.Add(this.pic_Box);
            this.Controls.Add(this.gb_Settings);
            this.Name = "Form1";
            this.Text = "RRR Robot Simulation";
            this.Load += new System.EventHandler(this.Form1_Load);
            ((System.ComponentModel.ISupportInitialize)(this.pic_Box)).EndInit();
            this.ResumeLayout(false);

        }

Wie kann ich das unterbinden? Ich möchte die PictureBox einfach mit 600x600!
Danke im vorraus
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 46

beantworten | zitieren | melden

Was ist die DPI-Skalierung deines System? Ich vermute du benutzt eine Einstellung größer als 100%.
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jompikumpi am .
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 33
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Ich hab das mal gegooglet und wenn es das ist, was ich denke (unter Windows 10 unter Einstellungen/Anzeige/Skalierung und Anordnung) sind bei mir standartmäßig 125% eingestellt, und bei der Auswahl 125% steht auch "(empfohlen)" dabei. Wenn ich das auf 100% ändere, ändert es jedoch nichts. Die Größe der PictureBox wird nachwievor von 600x600 auf 450x488 gesetzt.
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 46

beantworten | zitieren | melden

Versuche mal den AutoScaleMode auf DPI zu setzen, wenn du den Designer benutzt.
private Nachricht | Beiträge des Benutzers
Jonas007
myCSharp.de - Member



Dabei seit:
Beiträge: 33
Herkunft: Österreich

Themenstarter:

beantworten | zitieren | melden

Problem gelöst. Danke dir !
Der AutoScaleMode der Form war standartmäßig auf Font. Wenn er auf DPI gestellt ist, funktioniert alles wie gewünscht

Edit: Die Größe der PictureBox wird trotzdem noch verändert: nämlich von 600x600 auf 480x480, eben die das 1/1.25 - fache, da meine Skalierung ja auf 125% ist. Das passt jedoch, da es mir nur um das Verhältnis der beiden Längen ging.
Ich verstehe zwar noch immer nicht, weshalb die box so skaliert wurde, aber egal ^^
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jonas007 am .
private Nachricht | Beiträge des Benutzers
Jompikumpi
myCSharp.de - Member



Dabei seit:
Beiträge: 46

beantworten | zitieren | melden

Zitat von Jonas007
Edit: Die Größe der PictureBox wird trotzdem noch verändert: nämlich von 600x600 auf 480x480, eben die das 1/1.25 - fache, da meine Skalierung ja auf 125% ist. Das passt jedoch, da es mir nur um das Verhältnis der beiden Längen ging.
Ich verstehe zwar noch immer nicht, weshalb die box so skaliert wurde, aber egal ^^
Du musst deine Anwendung als „DPI-aware“ deklarieren. Ansonsten wird sie für 96DPI erzeugt und von Windows skaliert. Dadurch wirken Anwendungen bei einer hohen Skalierung verschwommen.
Setting the default DPI awareness for a process (Windows) - Win32 apps
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Jompikumpi am .
private Nachricht | Beiträge des Benutzers