Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.01.09;
Скачать: CL | DM;

Вниз

CopyRect   Найти похожие ветки 

 
ser_ega   (2004-09-30 21:40) [0]

Привет! Сделал так:
var
 ARect: TRect;
begin
with Image1.Canvas do
 begin
   CopyMode := cmWhiteness;
   ARect := Rect(0, 0, 50, 50);
   CopyRect(ARect, Image1.Canvas, ARect);
   CopyMode := cmSrcCopy; { restore the copy mode }
 end;
End;
Как теперь скорированный ARect сохранить в файл!


 
Рыба ©   (2004-09-30 22:54) [1]

Не понял, ты имаг сам на себя что ли копируешь? :))

Лучше делай так:

var Bmp: TBitmap;
begin
 Bmp := TBitmap.Create;
 try
   ARect := Rect(0, 0, 50, 50);
   with Bmp, ARect do begin
     Canvas.CopyMode := cmWhiteness;
     Canvas.CopyRect(Rect(0,0,Right-Left,Bottom - Top), Image1.Canvas, ARect);
   end;
   Bmp.SaveToFile("copyrect.bmp");
 finally
   Bmp.Free;
 end;
end;


 
Рыба ©   (2004-09-30 22:57) [2]

Уй забул размеры битмапа установить:

var Bmp: TBitmap;
begin
 Bmp := TBitmap.Create;
 try
   ARect := Rect(0, 0, 50, 50);
   with Bmp, ARect do begin
     Width := Right-Left;
     Height := Bottom - Top;

     Canvas.CopyMode := cmWhiteness;
     Canvas.CopyRect(Rect(0,0,Width,Height), Image1.Canvas, ARect);
   end;
   Bmp.SaveToFile("copyrect.bmp");
 finally
   Bmp.Free;
 end;
end;


 
ser_ega   (2004-09-30 23:10) [3]

Как-то не так получается как бы мне хотелось! Ты сделал, что  Image стает белым цветом и сохраняет этот белый квадрат! А мне надо из картинки скопировать Rect и сохранить этот Rect(а не то что осталось от Rect) в Файл!


 
Рыба ©   (2004-09-30 23:26) [4]

Белый, потомучто
>   Canvas.CopyMode := cmWhiteness;
Ты сам так написал.

Укажи Canvas.CopyMode := cmSrcCopy;


 
ser_ega   (2004-09-30 23:51) [5]

А ты можеш объяснить что такое Rect(0,0,Width,Height) и ARect? Что это за прямоугольники? Чето не могу понять!


 
ser_ega   (2004-10-01 10:30) [6]

А нет, все понятно.


 
ser_ega   (2004-10-02 22:21) [7]

А кто это написал "А нет, все понятно"? Точно не я!

Кто нибуть, расскажите что такое Rect(0,0,Width,Height) и ARect, какова их роль? Ато я копирую прямоугольник, а он получается совсем в других пропорциях! Что за ДЕЛА!


 
Рыба ©   (2004-10-02 22:41) [8]

ARect := Rect(0, 0, 50, 50); - здесь задаем прямоугольник, который надо скопировать.
Rect(0,0,Width,Height) - прямоугольник растра, на который копируем (т.е. весь битмап).


 
ser_ega   (2004-10-02 23:59) [9]

Ну если я сделаю так:
Canvas.CopyRect(Rect(0,0,313,225), Image1.Canvas, Rect(0,0,313,225));
то поидее пропорции должны быть одинаковые? А у меня они совсем РАЗНЫЕ! Получается по ширине растянуто, а по высоте сжато!


 
Рыба ©   (2004-10-03 12:54) [10]

>ser_ega  (02.10.04 23:59) [9]
>Canvas.CopyRect(Rect(0,0,313,225), Image1.Canvas, Rect(0,0,313,225));

Если ты сделаешь так, и размеры растра при этом будут 313х225, то должно работать нормально. Ищи ошибку в другом месте и читай справку.


 
ser_ega   (2004-10-03 23:08) [11]

Чето не получается! А ты можеш сделать такую прогу (правильно работающую) и скинуть мне на мыло? ПЛИЗ!


 
Рыба ©   (2004-10-03 23:18) [12]

Сделать могу, скинуть не могу :))
Покажи код.

ЗЫ:
Попробуй поменять местами прямоугольники:
Canvas.CopyRect(ARect, Image1.Canvas, Rect(0,0,Width,Height));
Может быть я чего попутал... ))


 
Рыба ©   (2004-10-03 23:20) [13]

Хотя нет, ничего не попутал. Ищи у себя ошибку.


 
ser_ega   (2004-10-03 23:53) [14]

Bmp := TBitmap.Create;
 try
  ARect := Rect(StrtoInt(Edit1.Text), StrtoIntEdit2.Text),
                StrtoInt(Edit3.Text), StrtoInt(Edit4.Text));
  with Bmp, Arect do begin
    Width :=Right-Left;
    Height := Bottom - Top;
    Canvas.CopyRect(ARect(0,0,Width,Height), Image1.Canvas, ARect);
  end;
  Bmp.SaveToFile("c:\copyrect.bmp");

  Image2.Picture.Bitmap:=bmp;
  finally
    Bmp.Free;
  end;


 
ser_ega   (2004-10-03 23:57) [15]

Width и Height к чем относится? К Bmp или к Arect?


 
Рыба ©   (2004-10-04 00:21) [16]

>ser_ega  (03.10.04 23:57) [15]
>Width и Height к чем относится? К Bmp или к Arect?

К Bmp.
Не похоже, что это ты прямо из исходников скопировал...


 
Mihey_temporary ©   (2004-10-04 00:39) [17]


> Не похоже, что это ты прямо из исходников скопировал...


А может он F9 ещё не нажимал? :)


 
ser_ega   (2004-10-04 00:43) [18]

Что значит не нажимал? Я говорю что пропорции не совпадают, значит нажимал!

<Рыба
А Right, Left,Bottom и Top тогда к чему относятся? Ведь у BMP таких нет!


 
Рыба ©   (2004-10-04 00:52) [19]

>А Right, Left,Bottom и Top тогда к чему относятся? Ведь у BMP таких нет!

Это уже от ARect.


 
Рыба ©   (2004-10-04 00:58) [20]

Может ты Edit-ы перепутал? :)


 
ser_ega   (2004-10-04 11:25) [21]

Так я уже и без них делал!!!
----
Bmp := TBitmap.Create;
 try
   ARect := Rect(0,0,225,313);
   with Bmp, Arect do begin
        Height :=Bottom - Top;
        Width :=Right-Left;
        Canvas.CopyRect(Rect(0,0,Width,Height), Image1.Canvas, ARect);
  end;
  Bmp.SaveToFile("c:\copyrect.bmp");
  Image2.Picture.Bitmap:=bmp;
  finally
    Bmp.Free;
  end;
----
А ты попробуй у себя такой код! И потом скажеш идет или нет! ПЛИЗ!


 
ser_ega   (2004-10-04 11:54) [22]

Аааааааааааа! Нашел я в чем у меня прогон! У меня просто для Image1.Stretch:=true!

Еще такой вопросик: Можна ли узнать какой размер битмапа (в байтах) без сохранения его на винт?

Спасибо тебе за все!



Страницы: 1 вся ветка

Текущий архив: 2005.01.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.036 c
14-1103264611
X9
2004-12-17 09:23
2005.01.09
Управление светодиодами с помощью портов


3-1102488885
AHTOH
2004-12-08 09:54
2005.01.09
Чайницкий вопрос про отображение и редактирование записей в IBX


1-1103804080
eugene_sm
2004-12-23 15:14
2005.01.09
Delphi и Адресная книга OutGluk


3-1102476143
dolphin
2004-12-08 06:22
2005.01.09
filter глюкует в инспекторе пашет а програмно нет


14-1103568792
Profi
2004-12-20 21:53
2005.01.09
Возможно ли сделать на Pascal е