На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi · Книги по Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как прочитать список файлов, поддиректорий в директории?
5. Как запустить программу/файл?
... (продолжение следует) ...

Вопросы, подробно описанные во встроенной справочной системе Delphi, не несут полезной тематической нагрузки, поэтому будут удаляться.
Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.


Внимание
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки бан.
Мат в разделе - бан на три месяца...
Модераторы: jack128, D[u]fa, Shaggy, Rouse_
  
> Как получить первый пиксель в формате RGB и альфа канал?
    Мне нужно получить первый пиксель левого верхнего угла в формате RGB и альфа-канал с помощью Delphi7. Первый левый верхний пиксель (66,78,66) а альфа-канал 255. Пример на скриншоте.
    Прикреплённый файлПрикреплённый файлimg1.jpg (80,97 Кбайт, скачиваний: 7)

    Как можно получить эти данные и записать их в массив, кроме того чтобы убедиться в полученных данных вывести через Edit1. Исходники загрузки изображения.
    ExpandedWrap disabled
      unit Unit1;
       
      interface
       
      uses
        Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
        Dialogs, ExtCtrls;
       
      type
        TForm1 = class(TForm)
          Image1: TImage;
          procedure FormCreate(Sender: TObject);
        private
          { Private declarations }
        public
          { Public declarations }
        end;
       
      var
        Form1: TForm1;
        bmp1: TBitmap;
      implementation
       
      {$R *.dfm}
       
      procedure TForm1.FormCreate(Sender: TObject);
      begin
        bmp1 := TBitmap.Create;
        bmp1.LoadFromFile('.\bitmap\img2.bmp');  // chargement du niveau
        Form1.Image1.Canvas.Brush.Color:=clWhite;
        Form1.Image1.Canvas.FillRect(Form1.Image1.ClientRect);
        Image1.Canvas.Draw(0,0,bmp1);
      end;
       
      end.

    Прикреплённый файлПрикреплённый файлExample1.zip (116,77 Кбайт, скачиваний: 4)
      Никак, предоставленный битмап 24-хбитный, для альфа канала надо 32 бита
      Без альфы так:
      ExpandedWrap disabled
        var
          Color: Longint;
          r, g, b: Byte;
        begin
          Color := ColorToRGB(image1.Canvas.Pixels[0, 0]);
          r     := Color;
          g     := Color shr 8;
          b     := Color shr 16;
          showmessage(Format('RGB: %d, %d, %d',[r, g, b]));
        end;
      Сообщение отредактировано: Gonarh -
        Gonarh, а как пройтись по всем пикселям в цикле по рядам. Сначала первый ряд потом второй ряд и т.д. получить RGB и занести цифры(RGB) в одномерный массив.
          медленно - через Pixels
          Быстро, учитывая формат пиксела - через ScanLine
          1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0203 ]   [ 17 queries used ]   [ Generated: 27.07.24, 08:03 GMT ]