Удалите точку в середине круга

Я работаю над проектом, в котором пользователь может рисовать фигуры и изменять их (размер, обводка и т. д.). Затем я столкнулся с проблемой, я попытался настроить толщину обводки внутри, поэтому я сделал этот код:

public void DrawCircle(Color c, int stroke, float w, float h, Graphics g)
    {
        this.width = w;
        this.height = h;
        this.strokeThickness = stroke;
        this.type = ShapeType.circle;


        w -= strokeThickness;
        h -= strokeThickness;
        PointF points = new PointF();
        //Centering the Shape
        points.X = (float)((center.X - (w/ 2)));
        points.Y = (float)((center.Y - (h / 2)));

        //Aliasing for smooth graphics when drawing and resizing
        g.InterpolationMode = InterpolationMode.High;

        //Drawing
        RectangleF rect = new RectangleF(points.X, points.Y, w, h);
        g.DrawEllipse(new Pen(c, stroke), rect);

    }

Но всякий раз, когда сохраняю (сохраняю в коллекцию для перекраски). Это происходит примерно так:

Удалите точку в середине круга

Точка отображается точно в центре. Он исчезает после picturebox.Refresh () / Invalidate (); но я не хочу этого в первую очередь. Как вы думаете, что здесь происходит?

Не стесняйтесь спрашивать части кода, которые вы хотите знать. Я просто представил чертежную часть.

Что такое center в вашем коде?

Rufus L 02.10.2018 03:51

общедоступный центр PointF = новый PointF (250f, 250f); Потому что мой ящик с картинками 500 500

TerribleDog 02.10.2018 03:53

Поместите Console.Debug (rect) после DrawEllipse и запустите вашу программу в режиме отладки. Убедитесь, что не существует вызова с нулевой шириной и высотой, вызывающим появление центральной точки.

Phil Wright 02.10.2018 06:49

{X = 46,90552, Y = 46,90552, Ширина = 406,189, Высота = 406,189} {X = 251, Y = 251, Ширина = -2, Высота = -2} @PhilWright

TerribleDog 02.10.2018 07:19

@PhilWright ширина и высота, кажется, снова рисуются с отрицательными значениями

TerribleDog 02.10.2018 07:33

Вот ваша проблема, вам нужно выяснить, почему вы получаете два звонка и почему второй для размера -2.

Phil Wright 02.10.2018 07:54

Кстати, InterpolationMode здесь не выполняет сглаживания. В основном он используется для изменения размера растровых изображений. Вам нужно использовать Graphics.SmoothingMode. В этом случае следует установить SmoothingMode.AntiAlias. Кроме того, поскольку Pen, используемый с настройками по умолчанию, рисует половину внутри и половину за пределами границ прямоугольника, вы можете использовать Прямоугольник. с отрицательными значениями, чтобы уменьшить его размер на половину размера Pen.

Jimi 02.10.2018 08:22
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
7
325
0

Другие вопросы по теме