Joh*_*mas 1 delphi graphics firemonkey
我们使用Delphi XE6构建一个跨平台的FireMonkey应用程序,我们想稍微调整一下JPG编码器.实际上我们想要子类化,更改JPEG签名,在文件中添加一些参数并更改文件扩展名.在实际的JPEG引擎中什么都不会改变.
此外,我们希望支持LoadThumbnailFromFile哪些仍将使用实际的JPG代码.
但是,我们很难找到JPG编码器在源代码中声明的位置以及如何子类化/派生它.
FireMonkey处理图形的方式与VCL处理图形的方式截然不同.
在VCL中,图形使用派生自的特殊类来处理Vcl.Graphics.TGraphic,例如Vcl.Graphics.TBitmap和Vcl.Imaging.jpeg.TJPEGImage.如果要加载/保存特定图形类型,可以创建特定类.
在FireMonkey中,使用从类FMX.Graphics.TCustomBitmapCodec中注册的专用类来处理图形FMX.Graphics.TBitmapCodecManager.您可以使用通用FMX.Graphics.TBitmap类来处理所有图形.加载图形时,它使用相应的注册编解码器(如果可以找到),但保存时必须指定要使用的编解码器.
FireMonkey为每个平台使用不同的编解码器实现,因此没有单个类可以子类化,就像在VCL中一样.因此,为了在FireMonkey中自定义JPEG处理,您必须创建自己的TCustomBitmapCodec衍生编解码器并对其进行TBitmapCodecManager注册(取消注册现有的类.jpg和.jpeg文件扩展名).以下是FireMonkey当前实现的编解码器类:
TBitmapCodecWICinFMX.Canvas.D2D.pasTBitmapCodecQuartzinFMX.Canvas.Mac.pasTBitmapCodecQuartzinFMX.Canvas.iOS.pasTBitmapCodecAndroidinFMX.Canvas.Android.pas使用{$IFDEF}语句,您可以根据需要利用自定义编解码器中的现有类.