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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2008, 22:01   #1
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию HRGN сохранение-загрузка?

Кто нибуть интерисовался существует
ли возможность сохратить регион в файл
и потом его загружать?

Звучит немного бредово но всётаки?
Comer_Jus вне форума Ответить с цитированием
Старый 19.05.2008, 22:05   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

GetRegionData -> ExtCreateRegion
B_N вне форума Ответить с цитированием
Старый 19.05.2008, 22:17   #3
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

можно маленький примерчик?
а то что то не разберусь

имеется функция:
Код:
 Function BitmapToRgn(Image: TBitmap): HRGN;
  Var            TmpRgn : HRGN;
                    x,y : integer;
      ConsecutivePixels : integer;
           CurrentPixel : TColor;
            CreatedRgns : integer;
           CurrentColor : TColor;

 Begin
  CreatedRgns := 0;
  Result := CreateRectRgn(0, 0, Image.Width, Image.Height);
  Inc(CreatedRgns);

  If (Image.Width = 0) Or (Image.Height = 0) Then Exit;

  For y:=0 To Image.Height-1 Do
   Begin
    CurrentColor:=Image.Canvas.Pixels[0,y];
    ConsecutivePixels:=1;
    For x:=0 To Image.Width-1 Do
     Begin
      CurrentPixel:=Image.Canvas.Pixels[x,y];
      If CurrentColor=CurrentPixel Then Inc(ConsecutivePixels)
      Else
       Begin
        //Входим в новую зону
        if CurrentColor=clWhite Then
         Begin
          TmpRgn:=CreateRectRgn(x-ConsecutivePixels,y,x,y+1);
          CombineRgn(Result,Result,TmpRgn,RGN_DIFF);
          Inc(CreatedRgns);
          DeleteObject(TmpRgn);
         End;
         CurrentColor:=CurrentPixel;
         ConsecutivePixels:=1;
        End;
      End;

   If (CurrentColor=clWhite) And (ConsecutivePixels>0) Then
    Begin
     TmpRgn:=CreateRectRgn(x-ConsecutivePixels,y,x,y+1);
     CombineRgn(Result,Result,TmpRgn,RGN_DIFF);
     Inc(CreatedRgns);
     DeleteObject(TmpRgn);
    End;
   End;
 End;
Comer_Jus вне форума Ответить с цитированием
Старый 21.05.2008, 18:30   #4
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

Неужели ни кто не поможет?
Comer_Jus вне форума Ответить с цитированием
Старый 21.05.2008, 19:48   #5
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Comer_Jus, Вы документацию по тем функциям, что я привёл смотрели? Какая нужна помощь для того, чтобы получить из функции массив - записать его в файл, прочитать из файла - передать в функцию...
B_N вне форума Ответить с цитированием
Старый 21.05.2008, 20:12   #6
Comer_Jus
Подтвердите свой е-майл
 
Регистрация: 16.05.2008
Сообщений: 54
По умолчанию

всё спасибо!
именно это и хотел услышать
Comer_Jus вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузка/сохранение рисунков Marsik Помощь студентам 20 20.11.2008 18:09
Загрузка ОЗУ HelloZAPOR Общие вопросы Delphi 2 20.07.2007 18:40
Сохранение и загрузка информации Slash Общие вопросы Delphi 9 04.02.2007 22:01
Сохранение и загрузка узлов TreeView из базы данных Ko$tello Компоненты Delphi 1 14.11.2006 17:15