Einzelnen Beitrag anzeigen

Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#13

AW: PNGImage, lineto/Move mit Alpha?

  Alt 3. Apr 2011, 18:52
Du könntest eventuell eine eigene Combine-Routine schreiben, die nur den Alpha-Channel verändert, und dann die ganz normalen Zeichenroutinen verwenden → siehe GR32_Blend.pas. Wird aber wahrscheinlich etwas „dirty“, da die Combine-Routinen in einem fixen Array gespeichert sind, das so aussieht:

Delphi-Quellcode:
type
  TCombineMode = (cmBlend, cmMerge);

{…}

var

{…}

{ Function Variables }
  CombineReg: TCombineReg;
  CombineMem: TCombineMem;

  BlendReg: TBlendReg;
  BlendMem: TBlendMem;

{…}

  MergeReg: TBlendReg;
  MergeMem: TBlendMem;

{…}

const
  BLEND_MEM: array[TCombineMode] of ^TBlendMem = ((@@BlendMem),(@@MergeMem));
  {…}
Ehrlich gesagt blicke ich gerade selbst nicht durch, was genau der Unterschied zwischen den Blend-, Combine- und Merge-Funktionen ist.

Jedenfalls existieren sie alle in verschiedenen Varianten und werden dynamisch zugewiesen, je nach verfügbaren CPU-Features.

Eventuell könntest du dort rumpfuschen, und die Funktionszeiger auf eine eigene Funktion umbiegen.

Nur so ne Idee...
  Mit Zitat antworten Zitat