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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2011, 10:53   #1
Claster
Форумчанин
 
Аватар для Claster
 
Регистрация: 02.09.2008
Сообщений: 340
По умолчанию Обрезка формы по рисунку и ее движение

Всем привет: Использую процедуры для обрезки формы по рисунку

Код:
function TButtonForm.CreateBRegion(Bitmap: TBitmap): HRGN;
var
  X, Y, XStart: Integer;
  TransColor: TColor;
begin
  Result := 0;   // на случай ошибки
  // Берем прозрачный цвет из левого верхнего угла
  TransColor := Bitmap.Canvas.Pixels[0, 0];

  with Bitmap do
    for Y := 0 to Height - 1 do
    begin
    X := 0;
    while X < Width do
    begin
      // Пропускаем прозрачные точки
      while (X < Width) and (Canvas.Pixels[X, Y] = TransColor) do
        Inc(X);
      if X >= Width then
        Break;
      XStart := X;
      // Пропускаем непрозрачные точки
      while (X < Width) and (Canvas.Pixels[X, Y] <> TransColor) do
        Inc(X);
      // Создаём новый прямоугольный регион и добавляем его к региону картинки
      if Result = 0 then
        Result := CreateRectRgn(XStart, Y, X, Y + 1)
      else
        CombineRgn(Result, Result, CreateRectRgn(XStart, Y, X, Y + 1), RGN_OR);
    end;
  end;
end;
Код:
procedure TButtonForm.FormCreate(Sender: TObject);
 begin
   Bmp := TBitmap.Create;
  try
    ButtonForm.FormStyle := fsStayOnTop;
      //загружаем картинку фона и растягиваем форму по размеру картинки
    Bmp.LoadFromFile('b.bmp');
    ButtonForm.width := bmp.Width;
    ButtonForm.Height := bmp.Height;
      //Создаем регион по картнике
    FRegion := CreateBRegion(Bmp);
      //Придаем форме регион
    SetWindowRGN(self.Handle, FRegion, True);
    DeleteObject(FRegion);
    ButtonForm.Width := ButtonForm.Width*2;
    ButtonForm.Canvas.Draw(0,0,bmp);
  finally
  end;
end;
Все работает замечательно.....но.....я бы хотел что бы при нажатии на форму она меняла к примеру свою ширину или высоту........но просто
использую к примеру Form.Width := 200 не дает никакого результата в чем проблема????? как форму после обрезания по фотке заставить еще изменять свои размеры по нажатию например на кнопочку
Цитата:
- Только сисадмин может попросить у начальства 20$ на память...

Последний раз редактировалось Claster; 29.04.2011 в 11:03.
Claster вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как перехватить событие формы (Движение) ImmortalAlexSan Общие вопросы Delphi 12 02.01.2011 11:36
Движение формы BaRSyk174 Общие вопросы Delphi 2 17.09.2009 18:52
Как прикрепить рисунок к рисунку GrEFon HTML и CSS 2 26.11.2007 17:21
Окно по рисунку Stanislav Общие вопросы Delphi 2 03.10.2007 14:18
окно по рисунку Roof Помощь студентам 7 16.07.2007 21:18