Diskuze: Jednotky třídy Graphics
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Člen
Zobrazeno 14 zpráv z 14.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
vykresluje se to podle toho jakou jednotku máš nastavenou v PageUnit
Vyzkoušel jsem všechny možnosti, co tam jsou, ale ani jedna nepomáhá. Je to divné. Opravdu se výška a šířka formuláře zadává v pixelech?
ano v pixelech (pokud jde o WinForm).
ps. Takhle bez kódu ti těžko někdo poradí.
Tady je. V podstatě tohle by mělo udělat velký čtverec, přes celé okno. Ale vždycky ho to udělá větší.
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.Width = 300;
this.Height = 300;
}
private void Form1_Paint(object sender, PaintEventArgs e)
{
Graphics kp = e.Graphics;
kp.PageUnit = GraphicsUnit.Pixel;
kp.FillRectangle(Brushes.Red, 0, 0, 300, 300);
}
}
Já si většinou všechno zakresluji na samostatnou bitmapu a pak to dám do pictureboxu, ve kterém nastavím sizemode na zoom a mám po problémech. Na druhou stranu to asi je trochu pomalejší. Jinak už jsem se s tím taky setkal a je to divné.
Ten čtverec byl jen ukázka. Tohle mi nepomůže. Na tento problém jsem narazil při programování hry, kde budu potřebovat přesné vykreslení. Ale díky za tip.
Není třeba možné, že to, do čeho zakresluješ, má délku a šířku 300, zatímco čtverec, který kreslíš, má délku a šířku o 1 větší, protože kreslíš od 0 ?
udělej to jak píše Tomáš, takhle se ti do toho rozměru připočítávají okraje a titulek okna. A picturebox se bude vykreslovat rychleji.
Tím to nebude. To bych asi od oka nepoznal. Výchylka bude cca 20%.
Aha, teď jsem si to zkusil a dokonce to funguje i tak jak to máš ty.
Je to zajímavé, pokud se ti to nevykresluje..
Už jsem na to asi přišel.
Když jsem u daného formu, do kterého vykresluji, nastavil vlastnost
AutoScaleMode na none, všechno funguje jak má.
Zobrazeno 14 zpráv z 14.