2016-04-24 97 views
0
void CNodo::DrawWithAnArrow(System::Drawing::Graphics^g, CNodo nd){ 
    g->DrawRectangle(System::Drawing::Pens::Black, posx, posy, lado, lado); 
    System::String ^cadena = contenido.ToString(); 
    System::Drawing::Font ^f = gcnew System::Drawing::Font("Arial", 10); 
    g->DrawString(cadena, f, System::Drawing::Brushes::Black, posx + static_cast<int>(lado/4), posy + static_cast<int>(lado/5)); // warning is in this line 
    g->DrawLine(System::Drawing::Pens::Black, posx + lado, posy + (lado/2), nd.getX(), nd.getY() + (lado/2)); 
} 

在此論壇中向所有人致以問候。我無法找到並修復我的代碼中的警告

所以。我收到來自編譯器的警告,指出可能會有數據丟失,因爲存在從int到float的轉換。

我感到困惑,因爲一切都在我的代碼中的變量是整數(POSX,花束和拉多),其中「LADO」等於20

我竟然用的static_cast防止警告,但它仍然在那裏。

如果有人可以幫助我這個問題,我會很感激它

回答

0

Graphics.DrawString方法採用x和y參數兩個float值。試試這個:

static_cast<float>(posx + (lado/4)) 

請注意,lado/4表達式可能會導致精度損失。