Конфликт неймспейсов - C#
Формулировка задачи:
Создаю одно приложение под пульт управления и столкнулся с проблемой.
У меня используются стандартные неймспейсы типа System.Windows.Forms, а также несколько специфических типа ABB.Robotics.Tps.Windows.Forms. Это по сути то же самое, но с другим видом кнопок, текстбоксов и пр.
Проблема возникает когда я пытаюсь нарисовать какую либо фигуру, например:
Если я использую в ней переменные типа
g.DrawRectangle(new Pen(Color.Black), x1 + X_offset, y1 + Y_offset, b, h)п»ї);
int
, то все работает замечательно. А когда пытаюсь сделать то же самое сfloat
мне выдает следующую ошибку:Error 1 The best overloaded method match for 'System.Drawing.Graphics.DrawRectangle(System.Drawing.Pen, int, int, int, int)' Error 2 Argument '2': cannot convert from 'float' to 'int'
Я знаю, что DrawRectangle и прочие подобные методы умеют работать сfloat
. Если я создаю проект в стандартном WindowsFormApplication, то все работает без косяков. Почему то мне кажется, что эта ошибка из за конфликтов неймспейсов, которые я объявляю сверху. Есть идеи в чем может быть проблема? Полный кодusing System; using System.Drawing; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Text; using System.Drawing.Imaging; using System.Windows.Forms; using ABB.Robotics.Controllers; using ABB.Robotics.Tps.Taf; using ABB.Robotics.Tps.Windows.Forms; using ABB.Robotics.Tps.Drawing; using ABB.Robotics.Controllers.FileSystemDomain; namespace TpsViewFLEX { public partial class TpsViewFLEX : TpsForm, ITpsViewSetup, ITpsViewActivation { //Счетчик деталей int amount = 0; //Смещение деталей относительно диска float X_offset = 0; float Y_offset = 0; //Смещение левого верхнего угла диска float Ox = 10; //диаметр диска float D = 276; float d = 47; private void disk_const() { pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); using (Graphics g = Graphics.FromImage(pictureBox1.Image)) { g.DrawEllipse(new Pen(Color.Black, 5), 10, 10, 276, 276); g.DrawEllipse(new Pen(Color.Black, 5), 10 + (276 - 47) / 2, 10 + (276 - 47) / 2, 47, 47); g.FillEllipse(new SolidBrush(Color.Black), 10 + (276 - 47) / 2, 10 + (276 - 47) / 2, 47, 47); } pictureBox1.Refresh(); } private void ISO_L() { //Высота/ширина/смещение float h = Convert.ToInt32(Data_H.Value); float b = Convert.ToInt32(Data_B.Value); float x_shift = Convert.ToInt32(Data_x_shift.Value); float y_shift = Convert.ToInt32(Data_y_shift.Value); //ограничение массива float k = 280 / (b + x_shift) + 1; float m = 280 / (h + y_shift) + 1; for (int i = 1; i < k; i++) { for (int j = 1; j < m; j++) { //Центр окружности диска float center = 138 + Ox; //Верхний левый угол, от которого строится массив float x1 = i * (b + x_shift); float y1 = j * (h + y_shift); //находим координаты каждого угла прямоугольника float x2 = x1 + b; float y2 = y1; float x3 = x1; float y3 = y1 + h; float x4 = x1 + b; float y4 = y1 + h; //вычисляем расстояние от центра до каждого угла прямоугольника double l1 = Math.Sqrt((x1 - center) * (x1 - center) + (y1 - center) * (y1 - center)); double l2 = Math.Sqrt((x2 - center) * (x2 - center) + (y2 - center) * (y2 - center)); double l3 = Math.Sqrt((x3 - center) * (x3 - center) + (y3 - center) * (y3 - center)); double l4 = Math.Sqrt((x4 - center) * (x4 - center) + (y4 - center) * (y4 - center)); //условие попадания фигуры в зону if (l1 < D / 2 && l2 < D / 2 && l3 < D / 2 && l4 < D / 2 && l1 > d / 2 && l2 > d / 2 && l3 > d / 2 && l4 > d / 2) { //Счетчик фигур amount++; tpsLabel7.Text = amount.ToString(); using (Graphics g = Graphics.FromImage(pictureBox1.Image)) { g.DrawRectangle(new Pen(Color.Black), x1 + X_offset, y1 + Y_offset, b, h); SolidBrush myBrush = new SolidBrush(Color.Green); g.FillRectangle(myBrush, x1 + X_offset, y1 + Y_offset, b, h); } pictureBox1.Refresh(); } } } amount = 0; } }
Решение задачи: «Конфликт неймспейсов»
textual
Листинг программы
float d_circle = float.Parse(numEditor4.Text, CultureInfo.InvariantCulture);
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д