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,posy和lado),其中“lado”等于20。
我甚至使用static_cast来阻止警告,但它仍然存在。
如果有人能帮我解决这个问题,我会非常感激
答案 0 :(得分:0)
Graphics.DrawString方法为x和y参数采用两个浮点值。试试这个:
static_cast<float>(posx + (lado / 4))
请注意,lado/4
表达式可能会导致精度损失。