Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Графика в Visual C++  (Прочитано 13611 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Fobos
Гость
« : 27-12-2009 18:51 » 

Помогите , при написании программы использовал след код
Код:
double dyA=(r1*r1-(x2-x1)*(x2-x1));
double yA=(y1-sqrt(dyA));
double dd=((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
double d=(sqrt(dd));
double a=((r1*r1-r3*r3+d*d)/2*d);
    double h=(sqrt(r1*r1-a*a));
double dx=(x1+a*(x3-x1)/d);
double dy=(y1+a*(y3-y1)/d);
double xF=(dx+h*(y3-y1)/d);
double yF=(dy-h*(x3-x1)/d);
MyDC.Arc(x1-r1,y1-r1,x1+r1,y1+r1,xF,yF,x2,yA);//Дуга FA
double xE=(dx-h*(y3-y1)/d);
double yE=(dy+h*(x3-x1)/d);
MyDC.Arc(x3-r3,y3-r3,x3+r3,y3+r3,xE,yE,xF,yF);//Дуга EF
    double yD=(y1+sqrt(dyA));
MyDC.Arc(x1-r1,y1-r1,x1+r1,y1+r1,x2,yD,xE,yE);//Дуга DE
    MyDC.Arc(x2-r2,y2-r2,x2+r2,y2+r2,x2,y2-r2,x2,y2+r2);//Дуга BC
MyDC.MoveTo(x2,y2+r2);
MyDC.LineTo(x2,yD);//Линия DC
MyDC.MoveTo(x2,y2-r2);
MyDC.LineTo(x2,yA);//Линия BA
и всесто такого

получаю такое
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 27-12-2009 19:05 » 

Fobos, совершенно не понятно, вместо чего и что ты получаешь...
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Fobos
Гость
« Ответ #2 : 27-12-2009 19:32 » 

Вместо того ,что на верхнем рисунке выделено жирной линией, получаю выделение красным на другом рисунке =))(т е он не правильно выделят красным ,части окружности)
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 27-12-2009 21:26 » 

Понятно: у меня стоял фильтр на radikal - свалку юзербаров, баннеров и прочего мусора.
Лучше атач к форуму было прикрепить.

Пойди по шагам: закомментируй все рисование, кроме одного и посмотри, правильно ли рисуется.
« Последнее редактирование: 27-12-2009 21:29 от RXL » Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 28-12-2009 06:23 » 

Код:
	double x1=150;
double y1=150;
double r1=100;

double x2=200;
double y2=50;
double r2=50;

double x3=100;
double y3=180;
double r3=25;

CBrush br(RGB(0,0,0));

CRgn reg1;
CRgn reg2;
CRgn reg3;
CRgn regL;

reg1.CreateEllipticRgn(x1-r1,y1-r1,x1+r1,y1+r1);
reg2.CreateEllipticRgn(x2-r2,y2-r2,x2+r2,y2+r2);
reg3.CreateEllipticRgn(x3-r3,y3-r3,x3+r3,y3+r3);
regL.CreateRectRgn(x1-r1,y1+r1,x3,y1-r1);

reg1.CombineRgn(&reg1,&reg2,RGN_DIFF);
reg1.CombineRgn(&reg1,&regL,RGN_DIFF);
reg1.CombineRgn(&reg1,&reg3,RGN_OR);

MyDC.FrameRgn(&reg1,&br,2,2);
MyDC.SetPixel(x1,y1,RGB(0,0,0));
MyDC.SetPixel(x2,y2,RGB(0,0,0));
MyDC.SetPixel(x3,y3,RGB(0,0,0));


* rgn1.PNG (0.75 Кб - загружено 2145 раз.)
« Последнее редактирование: 28-12-2009 06:26 от Алексей1153++ » Записан

lapulya
Молодой специалист

ru
Offline Offline

« Ответ #5 : 28-12-2009 11:12 » 

Пушистый, ты маньяк!
Записан

С уважением Lapulya
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #6 : 28-12-2009 11:16 » 

lapulya, правда ? Улыбаюсь
Записан

lapulya
Молодой специалист

ru
Offline Offline

« Ответ #7 : 28-12-2009 11:26 » 

угу, я даже читать код не стал (не говоря уж о запуске), тут нет вопроса по программированию, тут скорее математика и чистописание (чтобы в параметрах не наврать). А ты забурился по самые самые...
Записан

С уважением Lapulya
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #8 : 28-12-2009 11:30 » 

дык, меня как раз обломало математику считать (хотя была мысль) , а регионы есть же (причём, у них аж АПИшные корни) Улыбаюсь
Записан

lapulya
Молодой специалист

ru
Offline Offline

« Ответ #9 : 28-12-2009 11:58 » 

Вот я и говорю - маньяк! Улыбаюсь
Записан

С уважением Lapulya
zubr
Гость
« Ответ #10 : 28-12-2009 16:06 » 

Алексей1153++, дык у тебя вроде не совсем то. А где то что в тонких линиях?
Fobos, я в твоем коде нигде не вижу создания и подключения объекта Pen определенного цвета и толщины. Скорее всего в этом трабла.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #11 : 28-12-2009 16:12 » new

Цитата
. А где то что в тонких линиях?
Ну это уж поверх нарисовать - проще простого. Это он сам пусть Улыбаюсь

Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines