关于在mo中使用自定义符号问题(200分)

  • 主题发起人 主题发起人 nomaddog
  • 开始时间 开始时间
N

nomaddog

Unregistered / Unconfirmed
GUEST, unregistred user!
我有一个bmp格式的图库,现在想把这些图片当做图层中的图元图标显示在地图上,请各位有什么好的办法可以解决的,最好能给出一点源码
 
自己写个组件吧。
 
做成字体。。。
 
做成truetype font的字体,我已经试过了,但达不到我所要的效果
 
我自己也拷贝别人的一个组件,可是只能显示一种bmp格式符号,源码如下
unit Unit2;

{$WARN SYMBOL_PLATFORM OFF}

interface

uses
ComObj, ActiveX, Mo23ASymbol_TLB, StdVcl;

type
TMo23AsMaker = class(TAutoObject, IMo23AsMaker)
protected
function Draw(hDC, x, y: Integer): HResult;
stdcall;
function ResetDC(hDC: Integer): HResult;
stdcall;
function SetupDC(hDC: Integer;
dpi:do
uble;
const pBaseSym: IDispatch): HResult;
stdcall;
function SetBitMapName2(var BitMapName: WideString): WideString;
safecall;

end;


implementation

uses
Windows, ComServ, Graphics, Classes;



var
FBitmapFileName: string;
intSize : LongInt;
bmpBitmap : TBitmap;

function TMo23AsMaker.Draw(hDC, x, y: Integer): HResult;
var
cnvCanvas : TCanvas;

begin

cnvCanvas := TCanvas.Create;
cnvCanvas.Handle := hDC;
cnvCanvas.Brush.Style := bsClear;
cnvCanvas.BrushCopy( Rect( X - intSize, Y - intSize, X + intSize, Y +intSize ),
bmpBitmap, Rect( 0, 0, bmpBitmap.Width,bmpBitmap.Height ), clWhite );
cnvCanvas.Free;
Result := 0;


end;


function TMo23AsMaker.ResetDC(hDC: Integer): HResult;
begin

bmpBitmap.Free;

Result := 0;

end;


function TMo23AsMaker.SetupDC(hDC: Integer;
dpi:do
uble;
const pBaseSym: IDispatch): HResult;
begin

intSize := Variant( pBaseSym ).Size;

bmpBitmap := TBitmap.Create;
//bmpBitmap.LoadFromResourceName( Hinstance, 'MS_HOUSE' );
bmpBitmap.LoadFromFile(FBitmapFileName);

Result := 0;

end;


function TMo23AsMaker.SetBitMapName2(
var BitMapName: WideString): WideString;
begin

FBitmapFileName:=BitMapName;
Result := FBitmapFileName;
end;




initialization
TAutoObjectFactory.Create(ComServer, TMo23AsMaker, Class_Mo23AsMaker,
ciMultiInstance, tmApartment);
end.
 
我现在所想要的效果是能同时在多个图层上显示多种bmp格式符号,请问有什么样的好办法?
 
还是自己写控、件
 
后退
顶部