Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Web, ASP.NET
Войти
Регистрация
Восстановить пароль
 
skynick99
116 / 116 / 30
Регистрация: 06.12.2012
Сообщений: 254
1

Рисование эллипса на странице. Баг System.Drawing или мой?

29.11.2014, 00:06. Просмотров 302. Ответов 1
Метки нет (Все метки)

Короче говоря, первый раз сталкиваюсь с таким, этот баг или моя ошибка стопорит меня, замечу, что квадраты и все остальное рисует на ура.
И так что у меня есть:
handler вот часть его, остальное от него простые проверки:

C#
1
2
3
4
5
6
7
8
9
               context.Response.ContentType = "image/png";
 
                            SeparatorDrawing sep_draw = new SeparatorDrawing(type, width, height, color1, color2);
 
                            using (MemoryStream ms = new MemoryStream())
                            {
                                sep_draw.GetSeparator().Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                                ms.WriteTo(context.Response.OutputStream);
                            }
далее часть моего класса SeparatorDrawing точнее метод GetSeparator(), конструктор и так понятно что принимает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
        Bitmap pic=new Bitmap(width,height);
        Graphics g = Graphics.FromImage(pic);
        SolidBrush brush1 = new SolidBrush(ColorTranslator.FromHtml(color1));
     //   SolidBrush brush2 = new SolidBrush(ColorTranslator.FromHtml(color2));
       // Pen pen1 = new Pen(brush1);
       // int x = 0;
       // int y = 0;
       // int width = pic.Width;
       // int height = pic.Height;
       // Rectangle rect = new Rectangle(x, y, width-1, height-1);
       // g.DrawEllipse(pen1, rect);
      //  g.FillEllipse(brush1,rect);
        g.FillEllipse(brush1, 0, 0, pic.Width, pic.Height);
        g.Dispose();
        return pic;
и так в чем проблема, все рисуется но слегка коряво. может что-то сейчас другое используют а не System.Drawing?!

фото номер 1. эллипс (круг) 6 на 6.
C#
1
g.FillEllipse(brush1, 0, 0, pic.Width, pic.Height);
какого он так начинает его рисовать (1 писк+квадрат) и смещен сам на 1 пикс.

фото номер 2. эллипс (круг полый) 6 на 6
C#
1
g.DrawEllipse(pen1, rect);
слегка коряво (только при 6 на 6) и то благодаря, что я отнял по одному пиксу от высоты и ширины, что бы он вписался в размеры вопрос: почему так?

фото номер 3. эллипс (круг) 6 на 6.
C#
1
g.FillEllipse(brush1, -1, -1, pic.Width+1, pic.Height+1);
решил подогнать первое фото к нормальному виду, что более менее, но кругом такое назвать я лично не могу.

Еще раз повторюсь это баг или я туплю где-то.
Уже начал вспоминать, формулы по которым строится эллипс, чтобы самому нарисовать через точки или полигоны, но намой счет это совсем извращение.
0
Изображения
   
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.11.2014, 00:06
Ответы с готовыми решениями:

Неявное преобразование типа "System.Drawing.Icon" в "System.Drawing.Image" невозможно
ПОдскажите как можно вставить рисунок в панель если использую ico. Неявное преобразование типа...

Рисование System.Drawing
Добрый день, нашел вот такой код {$apptype Windows} {$reference 'System.Windows.Forms.dll'}...

Рисование с System::Drawing
Возникла проблема вывода в окно, допустим есть форма и я рисую: Form1(void) {...

Рисование графика на форме (System.Drawing)
Используя классы из пространства имен System.Drawing нарисовать график на форме: ...

Нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D
Задача нарисовать сферу на форме в пространстве имен System.Drawing и System.Drawing.Drawing2D. С...

1
skynick99
116 / 116 / 30
Регистрация: 06.12.2012
Сообщений: 254
29.11.2014, 00:41  [ТС] 2
я в шоке, чуть более детальней перерыл System.Drawing. И о чудо нашел свойство которое помогло мне
C#
1
Graphics.SmoothingMode()
сглаживает неровности, или проще говоря более точно рисует фигуру.
вставил перед прорисовкой эллипса.
C#
1
g.SmoothingMode = SmoothingMode.HighQuality;

Не по теме:

блин, больше 2 часов потрачено времени непонятно на что. я в шоке.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.11.2014, 00:41

System.Drawing рисование простых геометрических фигур и изменения их размеров
Необходимо нарисовать флаг Украины (сверху - синий, снизу - желтый), который каждые 150 мс будет...

Как получить System.Drawing.FontStyle из System.Drawing.Font ?
Font textFont = new Font("Verdana", 26f, FontStyle.Bold | FontStyle.Italic); Как получить из...

Невозможно преобразовать параметр 1 из 'System::Drawing::Point ^' в 'System::Drawing::Point
oldCursorPosition = gcnew Point(e->X, e->Y); // Устанавливаем флаг на Да ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru