4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
1

Избежать смешивания цветов при наложении цветных кругов друг на друга

06.10.2012, 21:43. Показов 1583. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в том что необходимо как бы прозрачные три круга разного цвета,
два получаются а вот по середине смешение цветов и ерунда

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
 
   var R1, R2, R3, R4, R5 : integer;
  begin
 
       R1 := round(a);
      R2 := round(b);
        R3 := round(c);
 
         
 
if button=mbright then
 
 
 
     with Image1.Canvas do begin
      pen.Mode:=pmMask;
 
 
 
     pen.Color:= ColorBox3.Selected;
     Brush.Color:=ColorBox3.Selected;
 
     Ellipse(x-(R1),y-(R1),x+(R1),y+(R1));
 
 
     pen.Color:=ColorBox2.Selected;
     Brush.Color:=ColorBox2.Selected;
     Ellipse(x-(R2),y-(R2),x+(R2),y+(R2));
 
 
 
     pen.Color:=ColorBox1.Selected;
     Brush.Color:=ColorBox1.Selected;
     Ellipse(x-(R3),y-(R3),x+(R3),y+(R3));{}
     
     end;
 
  
end;
 
 
 
 
 
 
 
 
 
procedure TForm1.N2Click(Sender: TObject);
var pt : tpoint;
w1, h1: extended;
begin
if openpicturedialog1.Execute then
bm:=TBitMap.Create; // экземпляр класса
//грузим в него изображение
bm.LoadFromFile(openpicturedialog1.FileName);
//вот здесь нужно StretchDraw
w1:=bm.Width;//ширина
h1:=bm.Height;//высота
 
Image1.Canvas.StretchDraw(Bounds(0,0,Image1.width,Image1.height), bm);//передаем на канву Имадже
 
 
      end;
 
procedure TForm1.N3Click(Sender: TObject);
begin
  if savedialog1.Execute then
image1.Picture.SaveToFile(savedialog1.FileName);
end;
 
 
procedure TForm1.N4Click(Sender: TObject);
begin
 Exit
end;
 
procedure TForm1.N6Click(Sender: TObject);
begin
 ShowMessage('Купцов А.И., Исламхузин Д.Я., Галеев А.Д.')
end;
 
procedure TForm1.Button2Click(Sender: TObject);
begin
if savedialog1.Execute then
image1.Picture.SaveToFile(savedialog1.FileName);
end;
 
 
 
end.
Избежать смешивания цветов при наложении цветных кругов друг на друга
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.10.2012, 21:43
Ответы с готовыми решениями:

Проблема с коллайдером 2D при наложении друг на друга
Помогите новичку разобраться с Collider 2D. Вид сверху. Есть два поля (чёрные квадраты),...

Как избежать наложения друг на друга textview
Есть такой layout <?xml version="1.0" encoding="utf-8"?> <LinearLayout...

Найти пару кругов, имеющих наибольшую площадь и не перекрывающих друг друга
Ребят, помогите, без них до сессии не допускают( Задача 2.1. Четыре круга заданы радиусами и...

Найти пару кругов, имеющих наибольшую площадь и не перекрывающих друг друга
Помогите написать, заранее благодарен. Четыре круга заданы радиусами и координатами своих...

6
1301 / 707 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
08.10.2012, 15:23 2
по картинке не понятно зачем там прозрачность, в каком порядке круги и какого они должны быть цвета.
0
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
08.10.2012, 16:31  [ТС] 3
туда я подгружаю карту - прозрачность нужна чтобы видеть карту
круги же в последовательности - красный, зеленый, желтый
0
1301 / 707 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
08.10.2012, 17:33 4
может средствами DirectDraw, OpenGL или GDI+ рисовать?
0
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
08.10.2012, 20:31  [ТС] 5
я не знаю.. не умею точнее, если вы поможете
0
4149 / 1803 / 213
Регистрация: 06.10.2010
Сообщений: 4,033
09.10.2012, 09:15 6
Как сделать чтобы 3 круга не находили друг на друга

Добавлено через 1 час 13 минут
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
procedure AlphaBlend(hdcDest, xoriginDest, yoriginDest, wDest, hDest, hdcSrc, xoriginSrc, yoriginSrc, wSrc, hSrc, ftn: LongInt);stdcall;external 'Msimg32.dll';
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
const
  Alpha=170;
var
  R1,R2,R3:  integer;
  Bitmap:    HBITMAP;
  DC,DeskDC: HDC;
  Brush:     HBRUSH;
begin
  R1 := 200;//round(a);
  R2 := 50; //round(b);
  R3 := 30; //round(c);
  if button=mbright then
  begin
      DeskDC:=GetDC(0);
      DC    :=CreateCompatibleDC(DeskDC);
      Bitmap:=CreateCompatibleBitmap(DeskDC,Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height);
      SelectObject(DC,Bitmap);
      Brush:=CreateSolidBrush($FFFF);
      SelectObject(DC,Brush);
      Ellipse(DC,x-R1,y-R1,x+R1,y+R1);
      DeleteObject(Brush);
      Brush:=CreateSolidBrush($00FF00);
      SelectObject(DC,Brush);
      Ellipse(DC,x-R2,y-R2,x+R2,y+R2);
      DeleteObject(Brush);
      Brush:=CreateSolidBrush(0);
      SelectObject(DC,Brush);
      Ellipse(DC,x-R3,y-R3,x+R3,y+R3);
      DeleteObject(Brush);
      Unit1.AlphaBlend(Image1.Canvas.Handle,0,0,Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height,DC,0,0,Image1.Picture.Bitmap.Width,Image1.Picture.Bitmap.Height,Alpha shl 16);
      DeleteObject(Bitmap);
      DeleteDC(DC);
      Image1.Repaint;
  end;
end;
1
4 / 4 / 0
Регистрация: 30.06.2011
Сообщений: 175
13.10.2012, 19:49  [ТС] 7
жалко - но проблема та же - по центру нужен красный цвет а не черный .. - что нужно для этого - так то вроде в правильном направлении идем

Добавлено через 3 минуты
а там цвет надо просто поменять!!!!!!!!!! работает - работает!!! работает!!!!!!!!
спасибо огромное!!!!!!!!!!!!!!! спасибо!!!

Добавлено через 10 часов 47 минут
А можно не затемнять остальной фон? почему он затеняется?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.10.2012, 19:49
Помогаю со студенческими работами здесь

Как выбрать множество максимально отличающихся друг от друга цветов?
На одной шкале нужно построить несколько десятков графиков. Столкнулся с проблемой автоматического...

Как в PHP отделить элементы друг от друга, чтобы не ругались друг на друга?
<?php $chitat = fopen('yoo.txt', 'r'); if (!$chitat) { echo 'Ошибка при открытии файла...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru