2016-04-06 10 views
1

Aşağıdaki tabloya grafiksel olarak değişkenleri gösteren bir kod var.C++ İçine zıt olarak bir float değişkeni panelin üzerine çiz

Point point1 = Point(20, height); 
Point point2 = Point(20, 0); 
buffGraphics->DrawLine(System::Drawing::Pens::Blue, point1, point2); 

Ancak bu sadece bir test olduğunu ve bir grafik oluşturmak için gereken gibi değişkenleri yüzer çizmek isterler. Bir panele nasıl bir şemayı çizebilirsin? Gerçekten C stili kullanmamalısınız

+1

Float değişkenlerini buraya eklediğinizde tam olarak ne işe yaramaz? Ayrıca, çizim için hangi çerçeveyi kullandığınızı bize bildirmek yararlı olabilir – IceFire

+0

Şamandıraları yerleştirdiğimde, çizmeden önce bunları yuvarlar. – shorty

+0

Çizim için hangi çerçeve/kütüphaneyi kullanıyorsunuz? C++ kendisi Point' yoksa burada buffGraphics' – IceFire

cevap

-1

böyle gibi atmalarını:

Point point1 = Point((int)x, (int)y)

Onlar da nokta okuma/güvensiz ve serttir. Çok ayrılmaz değeri dönen yöntemleri var Alternatif Point sınıf değiştirebilir

Point point1 = Point(static_cast<int>(x), static_cast<int>(y));

: Yerine aşağıdaki kullanın. Bu yaklaşımın yararı, Point'un geçici bir kopyasını oluşturmak zorunda kalmadan, ceil ve floor işlevleri gibi ek işlevler ekleyebileceğinizdir; Böyle bir şey olacaktır:

int xtoi() const { return static_cast<int>(x); }
int ytoi() const { return static_cast<int>(y); }
int xtoi_ceil() const { return static_cast<int>(ceil(x)); }
int xtoi_floor() const { return static_cast<int>(floor(x)); }
...
Point ptoi() const { return Point(static_cast<int>(x), static_cast<int>(x)); }
...

1

Sen PointF yerine Point kullanmalıdır. DrawLine da onunla çalışır ve PointFfloat s kabul eder.

İlgili konular