Originariamente inviato da Ephestus
Comunque se non erro il C++Builder ha la possibilità di importare file Delphi(ne sono certo perché il mio proff. era solito scrivere in Delphi le sue applicazioni per poi farcele "modificare"/"utilizzare" sul C++...
Per quanto ne so, sono i file compilati (dcu e bpl) ad essere compatibili, ma non il codice sorgente vero e proprio, che deve essere compilato all'interno di ciascun ambiente.
Originariamente inviato da Ephestus
Se stendi qualche riga di codice in Pascal provo a farla girare sul C Builder....mal che vada cercherò di tradurla a mano Che pazzo che sono......
Ti posto il codice del metodo che si occupa di creare la regione, ma non posso prendermi il tempo di formattarlo in HTML nè di commentarlo in modo approfondito:
codice:
function TSplashForm.CreateRegion(Bmp: TBitmap): THandle;
type
PRGBArray = ^TRGBArray;
TRGBArray = array[0..32767] of TRGBTriple;
var
x, y, s: Integer;
Excl: THandle;
Row: PRGBArray;
TrColor: TRGBTriple;
begin
Bmp.PixelFormat := pf24bit;
Result := CreateRectRgn(0, 0, Bmp.Width, Bmp.Height);
with TrColor do
begin
rgbtRed := 0;
rgbtGreen := 255;
rgbtBlue := 0;
end;
for y := 0 to Bmp.Height - 1 do
begin
Row := Bmp.ScanLine[y];
s := -1;
for x := 0 to Bmp.Width - 1 do
begin
if (Row[x].rgbtRed = TrColor.rgbtRed)
and (Row[x].rgbtGreen = TrColor.rgbtGreen)
and (Row[x].rgbtBlue = TrColor.rgbtBlue) then
begin
if s = -1 then
s := x;
end
else begin
if s > -1 then
begin
Excl := CreateRectRgn(s, y, x + 1, y + 1);
try
CombineRgn(Result, Result, Excl, RGN_DIFF);
s := -1;
finally
DeleteObject(Excl);
end;
end;
end;
end;
if s > -1 then
begin
Excl := CreateRectRgn(s, y, Bmp.Width, y + 1);
try
CombineRgn(Result, Result, Excl, RGN_DIFF);
finally
DeleteObject(Excl);
end;
end;
end;
end;
La funzione accetta come parametro di ingresso il bitmap da utilizzare come modello e restituisce l'handle della regione corrispondente da impostare sul form.
Ciao!