/ Forside / Teknologi / Udvikling / Delphi/Pascal / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Delphi/Pascal
#NavnPoint
oldwiking 603
jrossing 525
rpje 520
EXTERMINA.. 500
gandalf 460
gubi 270
DJ_Puden 250
PARKENSS 230
technet 210
10  jdjespers.. 200
Aflæsning af pixel på skærmen. (D6)
Fra : Bjarke Freund-Hansen


Dato : 08-11-01 15:58

Jeg er i gang med at lave et program hvor jeg har brug for at aflæse
farve værdien for en specefik pixel på skærmen, er det muligt? Og
hvordan?

 
 
Uffe Kousgaard (08-11-2001)
Kommentar
Fra : Uffe Kousgaard


Dato : 08-11-01 16:22

se TCanvas.Pixels[X,Y]

"Bjarke Freund-Hansen" <rknews@impsoft.dk> wrote in message
news:of6lutcgp9s7kjlm1g33p95u98ij25oaku@4ax.com...
> Jeg er i gang med at lave et program hvor jeg har brug for at aflæse
> farve værdien for en specefik pixel på skærmen, er det muligt? Og
> hvordan?



Bjarke Freund-Hansen (08-11-2001)
Kommentar
Fra : Bjarke Freund-Hansen


Dato : 08-11-01 17:35

On Thu, 8 Nov 2001 16:21:43 +0100, "Uffe Kousgaard"
<uffe@routeware.dk> wrote:

>se TCanvas.Pixels[X,Y]

Findes der en canvas for hele skærmen (eller for et sepcefikt
program)? Mit problem er at jeg skal tjekke et bestemt areal af
skærmen (eller af et program) for en farve, hvert X'te sekund. Hvis
der er andre løsninger på det, ville det også være iorden.

Yngve Damgaard (09-11-2001)
Kommentar
Fra : Yngve Damgaard


Dato : 09-11-01 10:09

Hej Bjarke.
Som Uffe er inde på , skal du bruge TCanvas.Pixels[X,Y]. For at få adgang
til pixel-data uden for dit eget program skal der "broderes" lidt.
Se nedenstående eks. som er ok på win98.Bruger du NT er det nok lidt mere
tricky da der her anvendes flere desktops (f.eks til screensaveren).
Men.. eksperimenter med det og se hvad der sker.

Yngve

function GetFullScreenPixel(X, Y: Integer): Tcolor;
var
ScreenDC: HDC;
ScreenCanvas: TCanvas;
begin
ScreenDC := GetDC(0);
ScreenCanvas := TCanvas.Create;
ScreenCanvas.Handle := ScreenDC;
result := ScreenCanvas.Pixels[X,Y];
ScreenCanvas.Free;
ReleaseDC(0, ScreenDC);
end;

"Bjarke Freund-Hansen" <rknews@impsoft.dk> skrev i en meddelelse
news:prclut4pr8sntgqh5bpn6fkokehrtlf75t@4ax.com...
> On Thu, 8 Nov 2001 16:21:43 +0100, "Uffe Kousgaard"
> <uffe@routeware.dk> wrote:
>
> >se TCanvas.Pixels[X,Y]
>
> Findes der en canvas for hele skærmen (eller for et sepcefikt
> program)? Mit problem er at jeg skal tjekke et bestemt areal af
> skærmen (eller af et program) for en farve, hvert X'te sekund. Hvis
> der er andre løsninger på det, ville det også være iorden.




Bjarke Freund-Hansen (10-11-2001)
Kommentar
Fra : Bjarke Freund-Hansen


Dato : 10-11-01 22:42

On Fri, 9 Nov 2001 10:08:45 +0100, "Yngve Damgaard" <yngve@yyy.dk>
wrote:

>Som Uffe er inde på , skal du bruge TCanvas.Pixels[X,Y]. For at få adgang
>til pixel-data uden for dit eget program skal der "broderes" lidt.
>Se nedenstående eks. som er ok på win98.Bruger du NT er det nok lidt mere
>tricky da der her anvendes flere desktops (f.eks til screensaveren).
>Men.. eksperimenter med det og se hvad der sker.

Indtil vidre virker det udemærket under win2000 (nt).

>function GetFullScreenPixel(X, Y: Integer): Tcolor;
>var
> ScreenDC: HDC;
> ScreenCanvas: TCanvas;
>begin
> ScreenDC := GetDC(0);
> ScreenCanvas := TCanvas.Create;
> ScreenCanvas.Handle := ScreenDC;
> result := ScreenCanvas.Pixels[X,Y];
> ScreenCanvas.Free;
> ReleaseDC(0, ScreenDC);
>end;

Jeg fik andetsteds denne kode som er lidt hurtigere hvis man bare skal
aflæse diverse pixels:

var
ScreenDC: HDC;
Pixel: Cardinal;

begin
ScreenDC := GetDC(0);
Pixel := GetPixel(ScreenDC, X, Y);
ReleaseDC(0);
end;

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408925
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste