Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.01.2018, 11:49   #1
egrozavr
Пользователь
 
Регистрация: 26.03.2014
Сообщений: 17
По умолчанию Конфликт неймспейсов

Создаю одно приложение под пульт управления и столкнулся с проблемой.

У меня используются стандартные неймспейсы типа 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.DrawRectan gle(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;
        }
}
egrozavr вне форума Ответить с цитированием
Старый 25.01.2018, 15:18   #2
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Попробуйте вызывать проблемный функционал с явным указанием пространств имён.
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вред анонимных неймспейсов Aoizora Общие вопросы C/C++ 4 06.09.2017 22:46
Конфликт JS в WordPress olgamar JavaScript, Ajax 6 19.11.2012 02:32
Конфликт перехвата? Fedor666 Общие вопросы C/C++ 0 27.11.2011 12:28
конфликт jquery johny_03 JavaScript, Ajax 1 18.11.2011 00:09
Конфликт IP Fellics{новичок} Компьютерное железо 3 30.12.2009 19:15