Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];

Вниз

Два вопроса про TImage   Найти похожие ветки 

 
Begin   (2002-09-25 00:48) [0]

1. Как можно повернуть содержимое TImage (или его самого) на определенный градус ??? (искал по FAQ не нашел... Плохо, вероятно, искал... :)

2. Можно ли заставить некий битмап, лежащий на форме, стать прозрачным в черных точках и полупозрачным в белых ??? Без использования DirectDraw/Show ???


 
Evgeny   (2002-09-25 05:09) [1]

Поищи по нику MBo. Он на такие вопросы уже неоднократно отвечал.


 
MBo   (2002-09-25 07:01) [2]

//только для 24-битных
//при повороте на 90*n градусов возможны погрешности
//из-за округления, в таких случаяъ надо использовать
//другие методы (они проще)


function BmpRot(const B: TBitmap;fi:integer):TBitmap;
type
TRGBTripleArray = array[word] of TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
var
x0,y0,i,j,x1,y1,x11,y11,x2,y2:integer;
ht,wd,newht,newwd:integer;
cfi,sfi: double;
sline1,sline2: pRGBTRipleArray;
BEGIN
sfi:=sin(degtorad(fi));
cfi:=cos(degtorad(fi));
ht:=b.height;
wd:=b.width;
newwd:=abs(round(ht*sfi))+abs(round(wd*cfi));
newht:=abs(round(wd*sfi))+abs(round(ht*cfi));
Result:=TBitmap.create;
Result.Width:=newwd;
Result.Height:=newht;
Result.PixelFormat:=pf24bit;
x0:=wd div 2;
y0:=ht div 2;
for j :=newht-1 downto 0 do begin
sline2 := Result.scanline[j];
y1:= 2*(j-(newht-ht) div 2 -y0);
for i := newwd-1 downto 0 do begin
x1:=2*(i-(newwd-wd) div 2 -x0);
x2 :=round(x1 * cfi - y1 * sfi);
y2 :=round(x1 * sfi + y1 * cfi);
x11:=x2 div 2 +x0;
y11:=y2 div 2 +y0;
if (x11>=0)and(x11<wd)and(y11>=0)and(y11<ht) then begin
sline1 := b.scanline[y11];
sline2[i] := sline1[x11];
end;
end;
end;
end;


 
Begin   (2002-09-29 02:31) [3]

Сеньк большой .... :)

А полупрозрачность, как я понимаю, нереализуема ???? :)


 
MBo   (2002-09-29 08:19) [4]

Реализуема.


 
VID   (2002-09-29 11:43) [5]

to Begin : посмотри в ubpfd, может найдёшь чего подходящего...



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

Форум: "Основная";
Текущий архив: 2002.10.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.031 c
1-31871
sagchat
2002-09-29 15:53
2002.10.10
Случайный текст.


4-32081
Карлсон
2002-08-26 21:42
2002.10.10
как различить два окошка?


14-31961
Сергей Суровцев
2002-09-12 23:26
2002.10.10
Поздравляю с ДНЕМ ПРОГРАММИСТА!!!


1-31730
KIR
2002-10-01 12:00
2002.10.10
BlockWrite <-> BlockRead


3-31646
Serv
2002-09-20 05:56
2002.10.10
Поиск в таблице





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский