Fast Transparent On Move

0

Witam Wszystki

Mam takie pytanko czy moze ktos wie jak szybko rozowac transparentosc przy przesuwanie obrazka po formie do tej pory uzywałem takie procedurki ale ona jest zbyt wolna i moli wszytko


procedure AddRgn;
    begin
      SpanRgn := CreateRectRgn(x1,row,x2,row+1);
      CombineRgn(RowRgn, RowRgn, SpanRgn, RGN_OR);
      DeleteObject(SpanRgn);
      x1:=-1;
    end;
begin
  WindowRgn := CreateRectRgn(0,0,0,0);
  for row := 0 to height-1 do
    begin
    RowRgn := CreateRectRgn(0,row,0,row);
      x1:=-1;
      for col:=0 to width-1 do
        begin
          x2:=col+1;
          if canvas.Pixels[col, row]<>FTransparentColor then
            begin
              if x1=-1 then
                x1:=col;
            end
          else
            begin
              if x1<>-1 then
                AddRgn;
            end;
        end;

      if x1<>-1 then
        AddRgn;
    CombineRgn(WindowRgn, WindowRgn, RowRgn, RGN_OR);
    DeleteObject(RowRgn);
    end;
  SetWindowRgn(Handle,WindowRgn,true);

Pozdrawiam wszystki

0
Slayd napisał(a)

Witam Wszystki

jak szybko rozowac transparentosc

Yeee... nie zrozumialem... co to znaczy "rozowac" ?

Może doublebuffered:=true; pomoże?

0

Zamiast bardzo wolnego Canvas.Pixels (!), poczytaj (choćby w FAQ) na temat ScanLine.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0