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

Работа с image

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

Студворк — интернет-сервис помощи студентам
Задание заключается в том что, нужно нарисовать эллипс который был бы разделёна на 180 областей, и при нажатии на кнопку все эти области закрашивались разными цветами от синего до красного, рандомно.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
21.12.2014, 12:23
Ответы с готовыми решениями:

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

работа с image
написал во такой обработчик на button2click procedure TForm1.Button2Click(Sender: TObject); var r,g,b,cr,cg,cb:byte; i,j:integer; ...

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

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

Решение

Например так.
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  [ТС]
А как сделать так что бы каждый раздел закрашивался по условию???? Например если k:=20 то синий если 25-и то зелёный, 30-и красный????
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.12.2014, 09:07
А если 21 или 135?

Добавлено через 33 секунды
Условие должно быть разумным и понятным.
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 09:24  [ТС]
Задание заключается в том что, нужно нарисовать эллипс который был бы разделёна на 180 областей, и при нажатии на кнопку выполнялось условие ( если K=20-и то область закрашивается синем, если K=25-и то область закрашивается зелёным, если K=30-и то область закрашивается красным),и так все области????????????????????????
0
3 / 3 / 1
Регистрация: 18.12.2014
Сообщений: 94
22.12.2014, 13:24
ну пиши тогда 180 условий if
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.12.2014, 13:36
Цитата Сообщение от Гргорий Посмотреть сообщение
если K=25-и то область закрашивается зелёным, если K=30-и то область закрашивается красным),и так все
Ну положим кратные 20, 25, 30 мы покрасим, а остальные?
Вы можете написать точное и полное условие задачи, а не свои убогие домыслы?
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 21:10  [ТС]
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
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.12.2014, 21:12
Цитата Сообщение от Гргорий Посмотреть сообщение
рандомно от 0 до 30
Так значит и цветов должно быть 31, а не 3...
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
22.12.2014, 21:23  [ТС]
должно быть 3-и цвета
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
22.12.2014, 21:56
так нафига от 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  [ТС]
не получается(
можеш сделать так чтобы edit1=номеру раздела(от 0 до 180), и edit2= от 0 до 30.
т.е если edit1=15 то закрашивается только 15-й раздел, если edit2=20-и то этот раздел закрашивается синем
или если edit1=27 то закрашивается только 27-й раздел, если edit2=25-и то этот раздел закрашивается зелёным
если edit1=70 то закрашивается только 70-й раздел, если edit2=30-и то этот раздел закрашивается красным ???????????

Добавлено через 14 часов 19 минут
если нет то все равно большое спасибо за помощь))))
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.12.2014, 13:15
Ты чего привязался к числам 20, 25 и 30? Если их всего 3, то почему не 0,1,2 как у меня?
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 13
23.12.2014, 15: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
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
23.12.2014, 15:30
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  [ТС]
спааааааасииииииибооооо
это оно )))))
от всей души благодарю))))))))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.12.2014, 15:40
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru