uzywam komponentu TPNGImage 1.4 do wczytywania obrazow png oczywiscie
czy ktos wie jak po najechaniu mysza na ten obraz rozjasnic go a po opuszczeniu mysza aby <ort>powrucil </ort>do pierwotnego stanu ?
Jak chodzi o rozjaśnianie, to spróbuj do każdego składowego koloru dodać jakąś wartość. Uważaj oczywście na dodanie więcej niż to możliwe (suma kolor składowy+dodana wartość>255).
zrobic zmienna przechowujaca rozjasniony obrazek. gdy najedzie sie kursorem nastapi podmiana.. image -> zmienna, zmienna -> image (of coz przy uzyciu zmiennej pomocniczej :P)
suma kolor składowy+dodana wartość>255
A nie "suma kolor składowy+dodana wartość<256" ??
arhi napisał(a)
suma kolor składowy+dodana wartość>255
A nie "suma kolor składowy+dodana wartość<256" ??
No tak, albo 'suma kolor składowy+dodana wartość=<255' ;) Ważny jest efekt ;p Polecam swissdelphicenter.ch :]
no cienki jestem nie umie tego zrobic
prosze moze ktos moze napisac taka gotowa procedurke rozjasnienia image1
[browar]
With Image1 do for X:=1 to widh do for Y:=1 to height do begin
Red:=Canvas.Pixels[X, Y] div $010000;
Green:=Canvas.Pixels[X, Y] mod $010000 div $000100;
Blue:=Canvas.Pixels[X, Y] mod $000100;
{Opcja pierwsza - rozjaśnianie + }
Red:=Red+10; //Oczywiście 10 to przykład
If Red>$FF then Red:=$FF;
Green:=Green+10; //Oczywiście 10 to przykład
If Green>$FF then Green:=$FF;
Blue:=Blue+10; //Oczywiście 10 to przykład
If Blue>$FF then Blue:=$FF;
{Opcja druga - rozjaśnianie * }
Red:=Red*1.5; //Oczywiście 1.5 to przykład
If Red>$FF then Red:=$FF;
Green:=Green*1.5; //Oczywiście 1.5 to przykład
If Green>$FF then Green:=$FF;
Blue:=Blue*1.5; //Oczywiście 1.5 to przykład
If Blue>$FF then Blue:=$FF;
Canvas.Pixels[X, Y]:=Red*$010000+Green*$000100+Blue*$000001;
end;
Nie jest to optymalny kod, ale działa i wszystko chyba widać co się dzieje.
//P.S. Oczywiście trzeba zadeklarować X, Y, Red, Green, Blue: Integer; wcześniej.
//Passage: Ale ten Twój kod nie rozjaśni równomiernie. Poza tym jak będzie powiedzmy kolor $0000FF, to po tym Twoim "rozjaśnieniu" będzie $303129, czyli z jasnego niebieskiego zrobi się niemal czarny.
for i:=0 to image1.Height do
for j:=0 to image1.Width do
if image1.Canvas.Pixels[j,i]+$303030<$EFEFEF then
image1.Canvas.Pixels[j,i]:=image1.canvas.pixels[j,i]+$303030;
moze cie to zadowoli :P pobaw sie wartosciami kolorow jak nie bedzie pasilo.</delphi>