Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Problemas con TCanvas.Pixels en la posición [0, 0] (https://www.clubdelphi.com/foros/showthread.php?t=64712)

Lord Delfos 15-04-2009 17:49:58

Problemas con TCanvas.Pixels en la posición [0, 0]
 
Buenas gente.

He estado buscando sobre este problema en la web, pero parece que soy el único al que le pasa... Así que pregunto por si a ustedes les ha pasado lo mismo.

Hace unos años hice un programita que trabaja con la propiedad Pixels de TCanvas. El otro día lo fui a usar y la cosa no funcionaba. Al ponerme a investigar me di cuenta de que NO ASIGNA los valores en la posición [0, 0]. No sé porqué, pero sencillamente no asigna un valor ahí, en los otros puntos sí que los asigna.

Lo más raro de todo es que si uno usa ScanLines, todo funciona perfectamente, la cosa falla solamente con Pixels.

La cosa pasa con los TBitmap en memoria, es decir, si yo creo una TImage en el formulario y uso Pixels[0, 0], la cosa funciona perfectamente.

Si alguien sabe a qué puede deberse, se los agradecería.

PD: Sé que el programa funciona perfectamente porque lo he usado durante años en el mismo WinXP de siempre. No ha cambiado nada desde entonces...

coso 15-04-2009 22:08:29

puedes poner el codigo?

PD: yo he tenido algunos problemas asignando al canvas de timage, pero no al de un tbitmap, aunque, para q se entienda, asignando al tbitmap de un timage a veces me da problemas.

Lord Delfos 17-04-2009 00:35:33

Hola coso. Gracias por contestar.

En realidad el código es de lo más simplón. Por ejemplo, una de las cosas que probé para ver qué pasaba (recito de memoria, porque estoy en un ciber y no tengo el código):

Código Delphi [-]
 
var Bmp: TBitmap;
     X, Y: Integer;
 
 
Bmp:= TBitmap.Create;
Bmp.LoadFormFile('c:\algo.bmp'); //que mide 18x18
Bmp.Canvas.Brush.Color:= clBlack;
Bmp.Canvas.Rectangle(0, 0, 17, 17);
 
for X:= 0 to 17 do
  for Y:= 0 to 17 do
    Bmp.Canvas.Pixel:= clWhite;

Bmp.SaveToFile('c:\algo.bmp');
Bmp.Free;

Y el pixel (0, 0) es clBlack, en vez de clWhite... El pixel (1, 0) es, increíblemente, clWhite.

coso 18-04-2009 20:31:39

Código Delphi [-]
for X:= 0 to 17 do
  for Y:= 0 to 17 do
    Bmp.Canvas.Pixel[X,Y]:= clWhite;

no se si ya lo has arreglado...

PD: nada, ahora vi q lo escribias de memoria


La franja horaria es GMT +2. Ahora son las 00:12:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi