Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
1

Работа с image

21.12.2014, 12:23. Показов 840. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Задание заключается в том что, нужно нарисовать эллипс который был бы разделёна на 180 областей, и при нажатии на кнопку все эти области закрашивались разными цветами от синего до красного, рандомно.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.12.2014, 12:23
Ответы с готовыми решениями:

Надо что бы при нажатии на какой либо Image с картинкой, картинка перекидывалась в пусто Image, а Image на который нажали исчезал.
Имеется 4 Image в 3 из них находятся картинки, а 4 пустой. Надо что бы при нажатии на какой либо...

работа с image
написал во такой обработчик на button2click procedure TForm1.Button2Click(Sender: TObject); var...

Работа с Image
Привет! Подскажите пожалуйста как сделать Image прозрачным,но закрашенным в цвет? Спасибо!

Работа с Image
Мне надо при нажатии кнопку поменять изображение из Image и через 3 секунда надо вернется на...

15
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
21.12.2014, 13:49 2
Лучший ответ Сообщение было отмечено Гргорий как решение

Решение

Например так.
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
var
  Form1: TForm1;
  xc,yc,a,b:integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
xc:=Image1.Width div 2;
yc:=Image1.Height div 2;
a:=xc-20;
b:=yc-20;
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.Rectangle(0,0,width,height);
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var u,x1,y1,x2,y2:integer;
begin
randomize;
with Image1.Canvas do
 begin
  u:=0;
  repeat
  x1:=xc+round(a*cos(u*pi/180));
  y1:=yc-round(b*sin(u*pi/180));
  x2:=xc+round(a*cos((u+2)*pi/180));
  y2:=yc-round(b*sin((u+2)*pi/180));
  brush.Color:=RGB(random(256),random(256),random(256));
  pie(xc-a,yc-b,xc+a,yc+b,x1,y1,x2,y2);
  u:=u+2;
  until u>360;
  pen.Width:=3;
  brush.Style:=bsClear;
  ellipse(xc-a,yc-b,xc+a,yc+b);
 end;
end;
Добавлено через 19 минут
Немного не так, нужно утром деньги, вечером стулья...
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
var
  Form1: TForm1;
  xc,yc,a,b:integer;
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
xc:=Image1.Width div 2;
yc:=Image1.Height div 2;
a:=xc-20;
b:=yc-20;
with Image1.Canvas do
 begin
  Brush.Color:=clWhite;
  Rectangle(0,0,width,height);
  Pen.Width:=3;
  Ellipse(xc-a,yc-b,xc+a,yc+b);
 end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var u,x1,y1,x2,y2:integer;
begin
randomize;
with Image1.Canvas do
 begin
  Pen.Width:=1;
  u:=0;
  repeat
  x1:=xc+round(a*cos(u*pi/180));
  y1:=yc-round(b*sin(u*pi/180));
  x2:=xc+round(a*cos((u+2)*pi/180));
  y2:=yc-round(b*sin((u+2)*pi/180));
  Brush.Color:=RGB(random(256),random(256),random(256));
  Pie(xc-a,yc-b,xc+a,yc+b,x1,y1,x2,y2);
  u:=u+2;
  until u>360;
 end;
end
1
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 09:03  [ТС] 3
А как сделать так что бы каждый раздел закрашивался по условию???? Например если k:=20 то синий если 25-и то зелёный, 30-и красный????
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.12.2014, 09:07 4
А если 21 или 135?

Добавлено через 33 секунды
Условие должно быть разумным и понятным.
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 09:24  [ТС] 5
Задание заключается в том что, нужно нарисовать эллипс который был бы разделёна на 180 областей, и при нажатии на кнопку выполнялось условие ( если K=20-и то область закрашивается синем, если K=25-и то область закрашивается зелёным, если K=30-и то область закрашивается красным),и так все области????????????????????????
0
3 / 3 / 1
Регистрация: 18.12.2014
Сообщений: 94
22.12.2014, 13:24 6
ну пиши тогда 180 условий if
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.12.2014, 13:36 7
Цитата Сообщение от Гргорий Посмотреть сообщение
если K=25-и то область закрашивается зелёным, если K=30-и то область закрашивается красным),и так все
Ну положим кратные 20, 25, 30 мы покрасим, а остальные?
Вы можете написать точное и полное условие задачи, а не свои убогие домыслы?
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 21:10  [ТС] 8
1)Есть таблица, 2-а столбца: 1-й стобец заполняется от 0 до 180, 2-й заполняется рандомно от 0 до 30. (это я зделал)
2)построить эллипс и заполнить все эти области в соответствии со значениями столбца 2-а. (то есть если значение первого ряда первой строки=1,а значение 2-го ряда первой строки= к примеру ( 23), то 1-й раздел закрашивается синим или если 25-и то зелёным) и так все 180 разделов.

Добавлено через 3 минуты
(приблезительно как с темпиратурой)
примерно задача ясна???

Добавлено через 15 минут
я просто не могу разобратся с тем как мне можно задать условие.
я попробовал так
k:=strtoint(edit1.Text);
if k:<=23 then begin Brush.Color:=RGB(0,0,255); end; так же для зелёного и красного.
тогда у меня получается что закрашиваются все разделы
а надо чтобы только первый радел

Добавлено через 2 минуты
то есть первый столбец - это номер раздела, второй- это значение по которому закрашивается раздел
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.12.2014, 21:12 9
Цитата Сообщение от Гргорий Посмотреть сообщение
рандомно от 0 до 30
Так значит и цветов должно быть 31, а не 3...
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 21:23  [ТС] 10
должно быть 3-и цвета
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
22.12.2014, 21:56 11
так нафига от 0 до 30?
определяешь цвет в том же цикле что и разбиение на сектора
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
with Image1.Canvas do
 begin
  Pen.Width:=1;
  u:=0;
  repeat
  x1:=xc+round(a*cos(u*pi/180));
  y1:=yc-round(b*sin(u*pi/180));
  x2:=xc+round(a*cos((u+2)*pi/180));
  y2:=yc-round(b*sin((u+2)*pi/180));
  a:=random(3);
  case a of
  0:Brush.Color:=clRed;
  1:Brush.Color:=clGreen;
  2:Brush.Color:=clBlue;
  end;
  Pie(xc-a,yc-b,xc+a,yc+b,x1,y1,x2,y2);
  u:=u+2;
  until u>360;
 end;
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
23.12.2014, 12:55  [ТС] 12
не получается(
можеш сделать так чтобы edit1=номеру раздела(от 0 до 180), и edit2= от 0 до 30.
т.е если edit1=15 то закрашивается только 15-й раздел, если edit2=20-и то этот раздел закрашивается синем
или если edit1=27 то закрашивается только 27-й раздел, если edit2=25-и то этот раздел закрашивается зелёным
если edit1=70 то закрашивается только 70-й раздел, если edit2=30-и то этот раздел закрашивается красным ???????????

Добавлено через 14 часов 19 минут
если нет то все равно большое спасибо за помощь))))
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
23.12.2014, 13:15 13
Ты чего привязался к числам 20, 25 и 30? Если их всего 3, то почему не 0,1,2 как у меня?
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
23.12.2014, 15:14  [ТС] 14
Есть form1 на нём 2-а edit-а и один рисунок (image),и кнопка. Задание заключается в том что: 1) на рисунке нужно нарисовать эллипс разделённый на 180 частей; 2) введя значения в edit1=номеру раздела(от 0 до 180), и в edit2= от 1 до 3. при нажатии на кнопку закрашивался определённый раздел.
т.е если edit1=15 то закрашивается только 15-й раздел, если edit2=1-и то этот раздел закрашивается синем
или если edit1=27 то закрашивается только 27-й раздел, если edit2=2-и то этот раздел закрашивается зелёным
если edit1=70 то закрашивается только 70-й раздел, если edit2=3-и то этот раздел закрашивается красным

Добавлено через 1 минуту
как закрасить только один раздел?????????????????
не важно каким цветом
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
23.12.2014, 15:30 15
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
procedure TForm1.Button1Click(Sender: TObject);
var u,x1,y1,x2,y2,n,k,c,i:integer;
begin
randomize;
val(Edit1.Text,n,c);
if (c<>0)or not(n in [1..180])then
 begin
  showmessage('Íåâåðíî âåäåí íîìåð ñåêòîðà');
  Edit1.Clear;
  Edit1.SetFocus;
  exit
 end;
val(Edit2.Text,k,c);
if (c<>0)or not(k in [1..3])then
 begin
  showmessage('Íåâåðíî âåäåí íîìåð öâåòà');
  Edit2.Clear;
  Edit2.SetFocus;
  exit
 end;
i:=-1;
with Image1.Canvas do
 begin
  Pen.Width:=1;
  u:=0;
  repeat
  x1:=xc+round(a*cos(u*pi/180));
  y1:=yc-round(b*sin(u*pi/180));
  x2:=xc+round(a*cos((u+2)*pi/180));
  y2:=yc-round(b*sin((u+2)*pi/180));
  i:=i+1;
  if i=n then
   begin
    case k of
    1:Brush.Color:=clBlue;
    2:Brush.Color:=clGreen;
    3:Brush.Color:=clRed;
    end
   end
  else Brush.Color:=clWhite;
  Pie(xc-a,yc-b,xc+a,yc+b,x1,y1,x2,y2);
  u:=u+2;
  until u>360;
 end;
end;
Добавлено через 1 минуту
Почему нужно
i:=-1;
честно сам не понял, но если i:=0; то не работает.
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
23.12.2014, 15:40  [ТС] 16
спааааааасииииииибооооо
это оно )))))
от всей души благодарю))))))))
0
23.12.2014, 15:40
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.12.2014, 15:40
Помогаю со студенческими работами здесь

Работа с image
Здравствуйте помогите пожалуйста новичку в программирование разобраться что происходит в коде...

Работа с Image
Подскажите: Я рисую произвольную фигуру.Как написать цикл, который бы разбивал эту фигуру на...

Работа с Image!
Как организовать переключение картинок, после нажатия на Image Картинка загружается из папки. ...

Работа с Image
На форме есть рисунок. Нужно программно размножить его, те автоматически создавать требуемое...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru