Changeset 29 for trunk/Packages/FastGraphics/UGGraphics.pas
- Timestamp:
- Dec 22, 2016, 9:46:17 PM (8 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Packages/FastGraphics/UGGraphics.pas
r27 r29 68 68 procedure PaintToBitmap(Bitmap: TBitmap; Rect: TRect; ColorConvertFunc: TGConvertColor); 69 69 procedure LoadFromCanvas(Canvas: TCanvas; ColorConvertFunc: TGConvertFromColor); overload; 70 procedure LoadFromBitmap(Bitmap: TBitmap; ColorConvertFunc: TGConvertFromColor); 70 71 procedure Fill(Color: TGColor); overload; 71 72 procedure Fill(Func: TGGetColor); overload; … … 224 225 end; 225 226 226 procedure TGPixmap<TGColor>.LoadFromCanvas(Canvas: TCanvas; ColorConvertFunc: TGConvertFromColor); overload;227 procedure TGPixmap<TGColor>.LoadFromCanvas(Canvas: TCanvas; ColorConvertFunc: TGConvertFromColor); 227 228 var 228 229 X, Y: Integer; … … 236 237 finally 237 238 Canvas.Unlock; 239 end; 240 end; 241 242 procedure TGPixmap<TGColor>.LoadFromBitmap(Bitmap: TBitmap; ColorConvertFunc: TGConvertFromColor); 243 var 244 X, Y: Integer; 245 PixelPtr: PInteger; 246 PixelPtrMax: PInteger; 247 PixelRowPtr: PInteger; 248 P: TPixelFormat; 249 RawImage: TRawImage; 250 BytePerPixel: Integer; 251 begin 252 try 253 Bitmap.BeginUpdate(False); 254 RawImage := Bitmap.RawImage; 255 PixelRowPtr := PInteger(RawImage.Data); 256 BytePerPixel := RawImage.Description.BitsPerPixel div 8; 257 PixelPtrMax := PixelRowPtr + RawImage.Description.Width * RawImage.Description.Height * BytePerPixel; 258 for Y := 0 to FSize.Y - 1 do begin 259 PixelPtr := PixelRowPtr; 260 for X := 0 to FSize.X - 1 do begin 261 if (X >= 0) and (X < FSize.X) and (Y >= 0) and (Y < FSize.Y) and (PixelPtr < PixelPtrMax) then 262 Pixels[X, Y] := ColorConvertFunc(PixelPtr^); 263 Inc(PByte(PixelPtr), BytePerPixel); 264 end; 265 Inc(PByte(PixelRowPtr), RawImage.Description.BytesPerLine); 266 end; 267 finally 268 Bitmap.EndUpdate(False); 238 269 end; 239 270 end;
Note:
See TracChangeset
for help on using the changeset viewer.