Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2012, 03:43   #21
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Вот работа со сканлайном:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  x, y: Integer;
  P: PRGBTriple;
  aBitMap:TBitMap;
begin
// создаем BitMap и настраиваем его свойства
  aBitMap:=TBitmap.Create;
  aBitMap.Height:=Form1.Height;
  aBitMap.Width:=Form1.Width;
  aBitMap.PixelFormat:=pf24bit;
// А тут заполняем цветом наш aBitMap
  for y:=0 to aBitMap.Height -1 do
    begin
    p:=aBitMap.ScanLine[y];
    for x:=0 to aBitMap.width -1 do
    begin
      Inc(P,1);
      P^.rgbtBlue:= (x*y and $FF0000) shr 16;
      P^.rgbtGreen:= (x*y and $00FF00) shr 8;
      P^.rgbtRed:= x*y and $0000FF;
    end;
    end;
// Копируем с aBitMap на форму  bitblt(Form1.canvas.Handle,0,0,Form1.Width,Form1.Height,
        aBitMap.Canvas.Handle,0,0,SRCCOPY);
// удаляем aBitMap
  aBitMap.Free;
end;
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 15.05.2012, 04:25   #22
Екатерина20
Пользователь
 
Аватар для Екатерина20
 
Регистрация: 25.09.2011
Сообщений: 72
По умолчанию

Спасибо) Попозже попробую сделать
Екатерина20 вне форума Ответить с цитированием
Старый 24.05.2012, 17:30   #23
Екатерина20
Пользователь
 
Аватар для Екатерина20
 
Регистрация: 25.09.2011
Сообщений: 72
Печаль

Я так и не разобралась, ничего в этой графики не понимаю. Может есть у кого-то похожий исходник. срочно нужен
Екатерина20 вне форума Ответить с цитированием
Старый 24.05.2012, 19:36   #24
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Попробуйте сначала пробежаться по картинке и сделать её строго черно-белой. A потом использовать команду floodfill(x,y,color) в обработчике MouseDown.
Если помог, проси поставить минус. Будь оригинален!
Rin вне форума Ответить с цитированием
Старый 24.05.2012, 19:38   #25
Екатерина20
Пользователь
 
Аватар для Екатерина20
 
Регистрация: 25.09.2011
Сообщений: 72
По умолчанию

Даже без оттенков серого?

если я здесь всю ненужную область закрашу в черный, ничего нормального не получится(
Изображения
Тип файла: jpeg 0_80e03_e5b4ac3_XL.jpeg (29.8 Кб, 35 просмотров)

Последний раз редактировалось Екатерина20; 24.05.2012 в 19:45.
Екатерина20 вне форума Ответить с цитированием
Старый 24.05.2012, 20:18   #26
Rin
Негодник
Форумчанин
 
Аватар для Rin
 
Регистрация: 10.11.2009
Сообщений: 880
По умолчанию

Вот отчего вам нужно отталкиваться.
Для того, чтобы красить в разный цвет, а не только в красный, можете использовать TColorDialog или TcolorList. Canvas.brush.color присваивайте выбранный цвет из TColorDialog .
Инструменты лучше оформить в виде маленькой формы, как у PhotoShop или Paint, а не в виде RadioGroup.
Это просто зарисовка, минут за 10. Больше ничем помочь не могу. Горы работы(.
P.S. Чтобы закраска была по секторам, нужно сделать сектор, который будете закрашивать, замкнутым с помощью "черного карандаша".
Вложения
Тип файла: rar Borland Studio Projects.rar (75.5 Кб, 9 просмотров)
Если помог, проси поставить минус. Будь оригинален!

Последний раз редактировалось Rin; 24.05.2012 в 20:21.
Rin вне форума Ответить с цитированием
Старый 24.05.2012, 20:35   #27
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

В дополнение к примеру Rin.
Добавить глобальные переменные x0, y0 и заменить 2 процедуры на те, что ниже:
Код:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  x0 := x;
  y0 := y;
  case R1.ItemIndex of
    0: bl := true;
    1: wh := true;
    2: floodfill(canvas.Handle, x, y, clBlack);
  end;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  canvas.MoveTo(x0, y0);
  if bl then
  begin
    canvas.Pen.Color := clBlack;
    canvas.lineto(x, y);
  end;
  if wh then
  begin
    canvas.Pen.Color := clWhite;
    canvas.lineto(x, y);
  end;
  x0 := x;
  y0 := y;
end;
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цветовая палитра Юля_новичок Помощь студентам 3 24.05.2011 11:47
Цветовая палитра Biohazard Общие вопросы Delphi 7 30.07.2010 12:58
Палитра _-Re@l-_ Общие вопросы Delphi 8 22.06.2010 11:39
Цветовая палитра Stanislav Помощь студентам 3 09.12.2007 03:46