2016-04-24 2 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)); 
} 

Приветствуем всех в этом форуме.Я не могу найти и исправить предупреждение в своем коде

So. Я получаю предупреждение от компилятора, указывающее, что есть возможная потеря данных, потому что есть преобразование из int в float.

я запутаться, потому что все переменные, которые находятся в моем коде являются целыми числами (PosX, Пози и Ладо), где «Ладо» равно 20.

Я даже использовал static_cast, чтобы предотвратить предупреждение, но он все еще там.

Если кто-то может помочь мне с этой проблемой, я действительно ценю это

ответ

0

Метод Graphics.DrawString принимает два значения с плавающей точкой для й и у параметров. Попробуйте это:

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

Пожалуйста, обратите внимание, что выражение lado/4 может привести к потере точности.

Смежные вопросы