⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 render.txt

📁 校园GIS系统——介绍校园个部门
💻 TXT
字号:
unit Renderer;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, ExtCtrls, StdCtrls, MapObjects2_TLB;

type
  TRendererFrm = class(TForm)
    GroupBox1: TGroupBox;
    RbDensityCheck: TRadioButton;
    RbChartCheck: TRadioButton;
    RbBreaksCheck: TRadioButton;
    RbValueCheck: TRadioButton;
    GroupBox2: TGroupBox;
    CbbLayer: TComboBox;
    Label1: TLabel;
    Label2: TLabel;
    CbbField: TComboBox;
    Label3: TLabel;
    EdtSize: TEdit;
    UpDownSize: TUpDown;
    Panel1: TPanel;
    ColorDialog1: TColorDialog;
    BtOk: TButton;
    procedure CbbLayerChange(Sender: TObject);
    procedure BtOkClick(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  RendererFrm: TRendererFrm;

implementation

uses Unitmain;

{$R *.dfm}

procedure TRendererFrm.Panel1Click(Sender: TObject);
begin
  if  ColorDialog1.Execute then
     Panel1.Color:=ColorDialog1.Color;
end;

procedure TRendererFrm.FormActivate(Sender: TObject);
var
  MapLayers: ImoMapLayer;
  i: Integer;
begin
  CbbLayer.Clear;
  for i := 0 to mainfrm.mainmap.Layers.Count - 1 do
  begin
    MapLayers := ImoMapLayer(mainfrm.mainmap.Layers.Item(i));
    CbbLayer.items.add(MapLayers.Name);
  end;
  CbbLayer.ItemIndex := 0;
  CbbLayer.OnChange(Sender);
end;

procedure TRendererFrm.CbbLayerChange(Sender: TObject);
var
MyTableDesc:imoTableDesc;
i:integer;
begin
  MyTableDesc:=CoTableDesc.Create;
  Currentlayer:=ImoMaplayer(MainFrm.MainMap.Layers.Item(CbbLayer.Text));
  MyTableDesc:=Currentlayer.Records.TableDesc;
  CbbField.Clear;
  for i:=0 to MyTableDesc.FieldCount-1 do
    begin
       CbbField.Items.Add(MyTableDesc.FieldName[i]);
       //添加字段
    end;
    CbbField.ItemIndex:=0;

end;

procedure TRendererFrm.BtOkClick(Sender: TObject);
Var
  MyRenderer:ImoDotDensityRenderer;
  MyValueRenDerer:ImoValueMapRenderer;
  MyChartRenderer:ImoChartRenderer;
  MyLayer:imoMapLayer;
  MyStatistics:ImoStatistics;
  MyRecord:ImoRecordSet;
  MyStrings:ImoStrings;
  i:integer;
begin
  MyLayer:=CoMapLayer.Create;

  MyLayer:=ImoMapLayer(MainFrm.MainMap.Layers.Item(CbbLayer.Text));
  if RbDensityCheck.Checked then
  //点密度专题图
  begin
    MyRenderer:=CoDotDenSityRenderer.Create;
    MyStatistics:=MyLayer.Records.CalculateStatistics(CbbField.Text);
    MyRenderer.Field:=CbbField.Text;
    MyRenderer.DotValue:=(MyStatistics.Min+(MyStatistics.Max-MyStatistics.Min)/2)/100;
    MyRenderer.DotColor:=Panel1.Color;
    MyRenderer.DotSize:=UpDownSize.Position;
    MyLayer.Renderer:=MyRenderer;
    MainFrm.MainMap.Refresh;
    MyRenderer:=Nil;
  end
  else if RbValueCheck.Checked then
  //独立值专题图
  begin
     MyStrings:=CoStrings.Create;
     MyValueRenderer:=CoValueMapRenderer.Create;
     MyRecord:=MyLayer.Records;
     Myrecord.MoveFirst;
     
     While not MyRecord.EOF do
     begin
     //过滤重复值
       MyStrings.Add(Myrecord.Fields.Item(CbbField.Text).ValueAsString);
       Myrecord.MoveNext;
       
     end;
     MyValueRenderer.Field:=CbbField.Text;
     MyValueRenderer.ValueCount:=MyStrings.Count;
     //开始渲染
     For i:=0 to MyStrings.Count-1 do
       MyValueRenderer.Value[i]:=MyStrings.Item(i);
     MyLayer.Renderer:=MyValueRenderer;
     MainFrm.MainMap.Refresh;
     MyRecord:=Nil;
     MyStrings:=Nil;
     MyValueRenderer:=nil;
  end

  else if RbChartCheck.Checked then
  //图表专题图
  begin
     MyChartRenderer:=CoChartRenderer.Create;
     MyChartRenderer.ChartType:=MoBar;
     MyChartRenderer.MaxPieSize:=8;
     MyChartRenderer.FieldCount:=3;
     for i:=0 to 2 do
       begin
          MyChartRenderer.Field[i]:= CbbField.Items.Strings[i];
          MyChartRenderer.Color[i]:=RGB(Random(255),Random(255),Random(255));
       end;
       MyLayer.Renderer:= MyChartRenderer;
       MainFrm.MainMap.Refresh;
  end;

end;



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -