Текущий архив: 2008.04.06;
Скачать: CL | DM;
Вниз
Компонент Image. Копирование изображений. Найти похожие ветки
← →
TX12 (2008-03-10 13:28) [0]Помогите решить проблему. Имеется изображение на Image10. Также имеются 9 компонентов Image1-9(компоненты расставлены на форме с такими же пропорциями(Height&Width) как и Image10). Каким образом можно "залить" изображение с image10 в компоненты image1-9, так что бы в последних компонентах была точная копия изображения с Имейдж10(сорри за тавтологию)? Пробовал так:
var a1,a2,a3:TPicture;
тогда программа просто напросто копирует изображение начиная с Image10.height:=0 и image10.width:=0. Для Image1 это верно, а вот для Image2 нужно что бы изображение копировалось с image10.height:=105 image10.width:=210. Каким образом это реализовать?
begin
begin
image10.Height:=105;
image10.Width:=105;
a1:=image10.picture;
image1.Picture:=a1;
end;
begin
image10.Height:=105;
image10.Width:=210;
a2:=image10.Picture;
image2.Picture:=a2;
← →
tesseract © (2008-03-10 14:51) [1]
> Для Image1 это верно, а вот для Image2 нужно что бы изображение
> копировалось с image10.height:=105 image10.width:=210.
Assign используй и поставь stretch в true.
← →
TX12 (2008-03-10 18:42) [2]
> Assign используй и поставь stretch в true.
Чуть подробнее можно?
← →
Amoeba © (2008-03-11 00:14) [3]
> TX12 (10.03.08 18:42) [2]
>
>
> > Assign используй и поставь stretch в true.
>
>
> Чуть подробнее можно?
Клавиша F1 + учебник в руки.
← →
TX12 (2008-03-11 17:31) [4]
> Клавиша F1 + учебник в руки.
смешно ппц. прочитай вопрос аккуратно. Про ассигн и стреч я ознакомлен. Вот только как его применить в моей то проблеме???
← →
Игорь Шевченко © (2008-03-11 17:36) [5]разбить на квадратики надо ?
← →
VirEx © (2008-03-11 17:36) [6]
> [4] TX12 (11.03.08 17:31)
если бы ты был "ознакомлен", то не задавал бы таких вопросов.
← →
{RASkov} © (2008-03-11 17:52) [7]> [4] TX12 (11.03.08 17:31)
Я читал-читал... [0] но так и не понял о чем там.....
Но подозреваю, что [5] прав и CopyRect тебе поможет....
← →
MetalFan © (2008-03-11 19:46) [8]
> так что бы в последних компонентах была точная копия изображения
> с Имейдж10
и
> а вот для Image2 нужно что бы изображение копировалось с
> image10.height:=105 image10.width:=210
чтото не очень совместимы.
но скорее всего в [7] истина
← →
Amoeba © (2008-03-12 01:06) [9]Удалено модератором
← →
TX12 (2008-03-12 08:25) [10]
> Не смеши мои тапки!
курить меньше нужно)
> разбить на квадратики надо ?
угу
← →
Игорь Шевченко © (2008-03-12 10:40) [11]TX12 (12.03.08 08:25) [10]
> угу
Попробуй загрузить большой Image в ImageList, подобрав его размеры так, чтобы в нем помещалось целое число частей изображения, а потом в цикле заполняй квадратики, вызывая ImageList.GetBitmap, увеличивая индекс битмапа. Я правда из файла таким методом загружал, пользуя ImageList.FileLoad
Если не поможет, то BitBlt со смещением, опять же в цикле - оно все умеет.
← →
{RASkov} © (2008-03-12 14:23) [12]Как вариант, сделать нечто вот такое:
function GetRect(ImW, ImH, Quantity, Index): TRect;
begin
end;
ну иCopyRect(R, Image10.Canvas, GetRect(Image10.Picture.Bitmap.Width, Image10.Picture.Bitmap.Height, 9, 2));
т.е. копируем кусок под указанным номером на любуб канву в область R...
где ImW, ImH - Ширина и высота всей области картинки.
Quantity - Всего кусков. (9)
Index - Нужный нам кусок (2)....
Вот только не соображу как сделать расчет "сетки" т.е.
если Quantity = 1 сетка 1х1
#
если 2 - 2х1
##
3 - 3х1
###
4 - 2х2
##
##
!5 - 5х1
#####
6 - 3х2
###
###
7 - 7х1
!#######
8 - 4х2
####
####
9 - 3х3
###
###
###
.....
16 - 4x4
####
####
####
####
и т.д.
Или как вариант при таких числах Quantity, как 5, 7, 11 (простые что ли?) и т.д. генерить исключение....
Можно, как вариант, не парится с этими расчетами а "в ручную" передавать размеры сетки, тогда можно будет передать такие как например (2x15), что не получится в "автоматическом".... :)
Ну а уж зная сетку, ширину и высоту исх. рисунка, и индекс части - не проблема высчитать и область этой части(части под номером Index).... даже и я это смогу со своими "мощнейшими" познаниями в математике :)
← →
{RASkov} © (2008-03-12 15:15) [13]> function GetRect(ImW, ImH, Quantity, Index): TRect;
*function GetRect(ImW, ImH, Quantity, Index: Integer): TRect;
Кому не трудно напишите функцию определения сетки... т.е. нечто так:type
TCells = record
Col, Row: Integer;
end;
function CalcCells(Quantity: Integer): TCells;
begin
if Quantity is <простое число> then raise Excaption.Create("Не выйдет из этого сетки");
with Result do begin
Col:=?
Row:=?
end;
end;
"Чёта" я никак не соображу, как "ее сделать" :(
Страницы: 1 вся ветка
Текущий архив: 2008.04.06;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.007 c