WalkLt開發(fā)說明_第1頁
WalkLt開發(fā)說明_第2頁
WalkLt開發(fā)說明_第3頁
WalkLt開發(fā)說明_第4頁
WalkLt開發(fā)說明_第5頁
已閱讀5頁,還剩32頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、題目:地圖縮放和全圖要求:1、實現(xiàn)全圖命令(在可見區(qū)可全視所有可見層的地物和文字)2、通過鼠標滾輪縮放(以光標點為縮放中心,向外滾動為放大,向內(nèi)縮小,滾距1.25 倍)詳見后面的說明。WalkLt程序結(jié)構(gòu)DocumentFrameViewGeoset 工作空間LayersDBsLayerDBFeaturesWalkLayersFeatureSymbolFactoryGM_ObjectAttributesMetaDataAnnotationsLayerFeaturesAnnotationLayerAnnotationsStylesLayerSymbolsStyleSelectionLayer E

2、xtend .TargetWalkSQLLabelPropertiesWalkGIS 工具包工作空間基類:無CWalkMapGeoset成員變量:層集合: m_layers數(shù)據(jù)庫集合:m_oWOBsUNDO/REDO : m_undoStack成員函數(shù):Walk 數(shù)據(jù)庫管理層管理Wks 訪問和存盤函數(shù)繪圖和繪圖環(huán)境管理函數(shù)層基類: CTypedPtrArray成員變量:CWalkMapLayers基類數(shù)據(jù)成員成員函數(shù):層集合操作函數(shù)基類:無成員變量:地物集 m_oFeatures 對象樣式集 m_oStyles 對象文字修飾集 m_oAnnotations 對象索引管理 m_oIndexs 對

3、象CWalkMapLayer層描述 (WalkLayersStr) m_walklayer層在工作空間中的設(shè)置(WsLayersStr) m_wslayer層所在庫CWalkOdbcBase *m_pWob選擇到的地物 CWalkMapSelection m_oSelection 選擇到的文字 CWalkMapSelection m_oAnSelection 設(shè)置為目標的地物 CWalkMapSelection m_oTarget成員函數(shù):成員對象訪問函數(shù)成員變量初始化和設(shè)置函數(shù)層描述管理函數(shù)層現(xiàn)態(tài)管理函數(shù)坐標系和單位管理函數(shù)繪制函數(shù)地物查找和選擇函數(shù)地物基類: CTypedPtrArray成

4、員變量:基類數(shù)據(jù)成員CWalkMapFeatures成員函數(shù):按 FeatureID 對 CWalkMapFeature 排序和查找地物幾何數(shù)據(jù)的數(shù)據(jù)庫表操作地物幾何數(shù)據(jù)的動態(tài)管理:獲取、釋放基類:無CWalkMapFeature成員變量:地物 ID : m_FeatureID樣式 ID : m_StyleID地物幾何體GM_Object 指針*m_pObj地物屬性組指針:m_pAttrs成員函數(shù):成員變量初始化和訪問函數(shù)式樣基類: CTypedPtrArrayCWalkMapStyles成員變量:基類數(shù)據(jù)結(jié)構(gòu)成員函數(shù):基類:無CWalkMapStyle成員變量:LayerSymbolStr成

5、員函數(shù):成員變量初始化和訪問函數(shù)五種樣式對話框函數(shù)五種樣式的位圖輸出函數(shù)自定義樣式接口函數(shù)地物繪制函數(shù)自定義式樣基類:無CWalkMapUserStyles成員變量:CTypedPtrArray 系統(tǒng)符號庫指針成員函數(shù):確定層所屬數(shù)據(jù)庫的函數(shù)地物繪制函數(shù)接口:屬于 Workspace,整個 Workspace 中唯一。是 CWalkMapStyle 中作為靜態(tài) static 指針?;悾?CTypedPtrArray成員變量:自定義符號表所在數(shù)據(jù)庫指針成員函數(shù):自定義符號的存庫函數(shù)和訪問函數(shù)地物繪制函數(shù)基類:無成員變量:SymbolFactoryStr m_st;成員函數(shù):成員變量初始化和訪問

6、函數(shù)自定義樣式定制對話框函數(shù)自定義樣式的位圖輸出函數(shù)地物繪制函數(shù)CWalkMapUserDbStylesCWalkMapUserStyle文字和影象基類: CTypedPtrArray成員變量:基類成員變量成員函數(shù):成員變量初始化和訪問函數(shù)基類:無成員變量:LayerAnnotationStr成員函數(shù):成員變量初始化和訪問函數(shù)添加文字和圖象函數(shù)CWalkMapAnnotationsCWalkMapAnnotation標注基類:CWalkMapLabelProperties成員變量:LabelProperty 數(shù)據(jù)成員成員函數(shù):成員變量初始化和訪問函數(shù)基類數(shù)據(jù)成員管理對話框函數(shù)選中集基類: CD

7、WordArray成員變量:基類數(shù)據(jù)成員成員函數(shù):成員變量初始化和訪問函數(shù)繪制選中標記CWalkMapSelectionWalk 數(shù)據(jù)庫基類: CDatabase成員變量:基類成員變量成員函數(shù):數(shù)據(jù)庫 Walk 層登記表管理符號庫管理元數(shù)據(jù)管理Features 表管理Annotations 表管理Symbols 表管理隱式索引管理CWalkOdbcBaseWalk 幾何幾何walkGeometry集合點 walkPoint線 walkParts面 walkPolygon環(huán) ring線條walkPoints線段walkSegment外包盒地物幾何的外包盒Box ,是一個矩形:Point_min;

8、/ 矩形的左下角坐標Point_max;/ 矩形的右上角坐標地物幾何walkGeometry 的主要函數(shù)構(gòu)造函數(shù):GM_Object();GM_Object(Point &);構(gòu)造一個點幾何GM_Object(const GM_Object &);從一個幾何中構(gòu)造GM_Object(BYTE* bin);從數(shù)據(jù)庫讀取的地物幾何來構(gòu)造創(chuàng)建幾何:Void Create(Point& pt1,Point& pt2,wkLineType linetype = wkLineTypeStraight);void Create(walkParts& wkParts,BOOL bRing=FALSE);voi

9、d Create(CPointArray& pts,BOOL bIntoPoly = FALSE,wkLineType linetype = wkLineTypeStraight);void Create(Box* pBox,BOOL bRing=FALSE);釋放幾何內(nèi)的數(shù)據(jù):void DeleteContent();獲取幾何類型:wkbGeometryType GetType();幾何中的元素類型(OR 值 )/ 1- 有點/ 2- 有線/ 4- 有面int GetElementsType();是否包含有非折線線型的線條BOOL bWithCurve();幾何的周長和面積double Ge

10、tPerimeter();double GetArea();獲得元素個數(shù)int GetPolygonCount();int GetPartsCount();int GetPointCount();獲得元素(指針)walkPolygon *GetOriginalPolygonAt(int nPolygonAt); walkParts* GetOriginalPartsAt(BOOL *bRing=NULL,int nIndex=0);walkPoint* GetPointAt(int nIndex);插入元素:BOOL InsertPolygon(walkPolygon &rPoly);BOOL

11、 InsertPartsAt(walkParts& parts, int nIndex=-1,BOOL bRing=FALSE);BOOL InsertPointAt(Point pt, int nIndex=-1);有向點:BOOL IsDirectPoint();/ 獲取有向點在 this 中指針位置,以及方向/ 方向:以弧度為單位,以橫軸起算,逆時針為正Point *GetOriginalDirectPoint(double &fDirectRad);/ 更新 this 為有向點(點位和方向)/fDistRef 用于計算方向參考點,默認為1 個實際單位BOOL SetDirectPoin

12、t(Point pt,double fDirectRad,double fDistRef=1.0);順向 /反向:BOOL PutGMInOrder();BOOL PutGMInOtherOrder();外包盒:Box envelope();型心點Point centroid();九交關(guān)系:wk9iResult Get9iGMObject(GM_Object* pObj2, double eps);點在 Walk 中點為三維坐標點,定義為:struct Pointdouble x, y, z;線線以及多邊形的環(huán)均表達為walkParts,由首尾相接的線條(所以在 Walk 中可將運動場跑道表達

13、為一個walkParts 線。對于環(huán), walkParts 必須閉合。walkPoints )組成。walkParts 的主要函數(shù):構(gòu)造函數(shù):walkParts(DWORD numPoints, walkPoints *ptss); 釋放空間:void DeleteContent();是否閉合:BOOLIsClosed();voidMakeClose();是否順時針:BOOLIsClockwise();voidReverse();子元素個數(shù):int GetPointsCount();獲取數(shù)據(jù)(指針) :walkPoints*GetOriginalPointsAt(int pos=0);插入數(shù)據(jù)

14、:BOOL InsertPointsAt(walkPoints& points, int pos=-1); 折線化:int Discrete(double eps=EPS_ZERO);獲取周長:double GetPerimeter();折線化:void GetDiscreteToPnts(CPointArray& pnts, double scale); 線段數(shù):int GetSegmentCount();獲取線段:seg 中的 m_seg 為指針位置,調(diào)用者不得刪除之.BOOL GetSegment(int nSegAt, CsSegment &seg);線條線條由點按同線型連接而成,wa

15、lkPoints 的主要函數(shù):構(gòu)造函數(shù):walkPoints();walkPoints(wkLineType lType,DWORD nPoints,const Point *pts);釋放空間:void DeleteContent();獲取線型:wkLineType GetLineType();void SetLineType(wkLineType lType);enum wkLineType wkLineTypePoint=0,/點wkLineTypeStraight=1,/折線wkLineTypeBezier=2,/Bezier 樣條 ;曲線不一定經(jīng)過樣點wkLineType3PArc=

16、3,/3 點圓弧 ; 3 點 : 起點 , 中點 , 終點wkLineTypeRArc=4,/ 半徑圓弧 ;wkLineTypeRectArc=5,/矩形橢圓弧 ;wkLineType3PCircle=6,/3 點圓 ;圓上 3 點wkLineTypeRCircle=7,/半徑圓 ;wkLineTypeRectCircle=8,/矩形橢圓 ;wkLineTypeBCurve=9,/B 樣條 ;wkLineTypeStrainCurve =10, / 張力樣條 ;獲取點數(shù)int GetPointCount();獲取數(shù)據(jù):walkPoint* GetOriginalPointAt(DWORD po

17、s=0); 插入點:BOOL InsertPointAt(const walkPoint& point, int pos=-1); 折線化:static double GetGzZlytParameter();static void SetGzZlytParameter(double val);折線化:點的 z 值被設(shè)置成 wkOneInsertPointMark 。 void AddDiscreteToPnts(CPointArray& pnts, double scale);規(guī)則化:int Normalizing();線段線段 walkSegment 是線條的組成部分,對于折線,兩點構(gòu)成一

18、線段;對于圓弧,三點為一線段(3 點?。?;對于其他線型,兩點構(gòu)成一線段。walkSegment 是工具類。面面 walkPolygon 由一個或多個環(huán) walkParts 組成,若有多個環(huán),則第一個環(huán)為外環(huán),其他環(huán)為內(nèi)環(huán)(洞) 。島也是多邊形。構(gòu)造函數(shù):walkPolygon(WKBPolygon *pPoly=NULL);釋放面的數(shù)據(jù):void DeleteContent();環(huán)數(shù)int GetRingsCount();獲取環(huán)(指針)walkParts *GetOriginalRingAt(int nIndex);向多邊形插入一個環(huán)/ bHole=TRUE, 將環(huán)插在環(huán)集的 0 位置;FAL

19、SE- 將環(huán)加到環(huán)集的尾處void InsertRing(walkParts &rRing,BOOL bHole);面積double GetArea();周長double GetPerimeter();多邊形的外包盒Box GetBox();多邊形的型心點Point centroid();是否為外環(huán)順時針,內(nèi)環(huán)逆時針BOOL IsClockwise();整理多邊形:1、 bOutRingClockwise=TRUE:外環(huán)順時針,內(nèi)環(huán)逆時針2、將環(huán)點流首點移動到指定角nRotateCornerAt -1-left-top2-top3-right-top4-left5-centro6-right7

20、-left-bottom8-bottom 9-right-bottom若 nRotateCornerAt=0 ,不對環(huán)旋轉(zhuǎn)void Clockwise(int nRotateCornerAt,BOOL bOutRingClockwise);集合多點、多線、多面或點線面組合構(gòu)成幾何集合。通過walkGeometry的At函數(shù)可遍歷、添加和刪除點線面基本要素。例子構(gòu)造一個體育場跑道(含洞的面):Point outerPs=0,40,0,0,140,0,40,180,0,80,140,0,80,40,0,40,0,0,0,40,0;Point innerPs=10,40,0,10,140,0,40,

21、170,0,70,140,0,70,40,0,40,10,0,10,40,0;walkGeometry runGrd;walkParts outerRing, innerRing;outerRing.InsertPointsAt(walkPoints(wkLineTypeStraight, 2, outerPs+0), 0);outerRing.InsertPointsAt(walkPoints(wkLineType3Parc,3, outerPs+1), 1);outerRing.InsertPointsAt(walkPoints(wkLineTypeStraight, 2, outerPs

22、+3), 2);outerRing.InsertPointsAt(walkPoints(wkLineType3Parc,3, outerPs+4), 3);innnerRing.InsertPointsAt(walkPoints(wkLineTypeStraight, 2, innerPs+0), 0);innnerRing.InsertPointsAt(walkPoints(wkLineType3Parc,3, innerPs+1), 1);innnerRing.InsertPointsAt(walkPoints(wkLineTypeStraight, 2, innerPs+3), 2);i

23、nnnerRing.InsertPointsAt(walkPoints(wkLineType3Parc, 3, innerPs+4), 3); 由外環(huán)和內(nèi)環(huán)生成面,再生成地物面:walkPolygon runPoly;runPoly.InsertRing(outerRing, FALSE);runPoly.InsertRing(innnerRing, TRUE);runGrd.InsertPolygon(runPoly);也可以采用如下方法生成地物面:runGrd.InsertPartsAt(outerRing, 0, TRUE);runGrd.InsertPartsAt(innerRing,

24、 1, TRUE);runGrd.PutGMInOrder();使用 WalkLt創(chuàng)建一個應(yīng)用使用 VC6 環(huán)境創(chuàng)建WindowsXP 操作系統(tǒng)) 。WalkLt應(yīng)用的例子(要求操作系統(tǒng)含GDIPLUS.DLL,如樣例數(shù)據(jù)和Walk 環(huán)境創(chuàng)建 VC 項目工程創(chuàng)建一個應(yīng)用主目錄,如。在應(yīng)用主目錄下創(chuàng)建Include 、 Lib和Bin 子目錄,如:D:WalkAppIncludeD:WalkAppLibD:WalkAppBin將 WalkLt 二次開發(fā)包中的文件分別復(fù)制到所創(chuàng)建的子目錄下:WalkLtInclude*.h復(fù)制到D:WalkAppIncludeWalkLtLib*.lib復(fù)制到D:

25、WalkAppLibWalkLtBin*.dll復(fù)制到D:WalkAppBin 建 文 WalkLtDemo 工程。( 略 )注意:因 WalkLt使用到了數(shù)據(jù) ,所以要支持數(shù)據(jù) 。添加 Walk 支持代碼1、在Stdafx.h 文件中添加WalkLt 文件:/ stdafx.h : includestandard system include files,/ or project specific include files that are used frequently, but/ are changed infrequently/#if !defined(AFX_STDAFX_H_FB

26、623594_INCLUDED_)#define AFX_STDAFX_H_FB623594_INCLUDED_#define VC_EXTRALEAN/ Exclude rarely-used stuff from Windows headers#include / MFC core and standard components#include / MFC extensions#include / MFC Automation classes#include / MFC support for#ifndef _AFX_NO_AFXCMN_SUPPORT#include / MFC supp

27、ort for Windows Common Controls#endif / _AFX_NO_AFXCMN_SUPPORT/ add for walkLt.dll -#include WalkLt_StdAfx.h/-/AFX_INSERT_LOCATION/ Microsoft Visual C+ will insert additional#endif / !defined(AFX_STDAFX_H_FB623594_INCLUDED_)2、在應(yīng)用程序的CWalkLtDemoApp類文件中添加GDI+的如下代碼/ WalkLtDemo.cpp : Defines the class be

28、haviors for the application./#include stdafx.h#include WalkLtDemo.h#include MainFrm.h#include WalkLtDemoDoc.h#include WalkLtDemoView.h/ CWalkLtDemoAppBEGIN_MESSAGE_MAP(CWalkLtDemoApp, CWinApp)END_MESSAGE_MAP()/ CWalkLtDemoApp constructionCWalkLtDemoApp:CWalkLtDemoApp()/ The one and only CWalkLtDemoA

29、pp object CWalkLtDemoApp theApp;/ add for walkLt.dll -GdiplusStartupInputm_gdiplusStartupInput;ULONG_PTRm_gdiplusToken;/-BOOL CWalkLtDemoApp:InitInstance()/ add for walkLt.dll -GdiplusStartup(&m_gdiplusToken,&m_gdiplusStartupInput,NULL);RemoveTemporyDataSource();/ 建 增加此行:清理 DSN/-AfxEnableControlCont

30、ainer();/ CWalkLtDemoApp message handlers/ add for walkLt.dll -int CWalkLtDemoApp:ExitInstance()GdiplusShutdown(m_gdiplusToken);/gdiplusreturn CWinApp:ExitInstance();/-/ WalkLtDemo.h : main header the WALKLTDEMO application class CWalkLtDemoApp : public CWinApppublic:CWalkLtDemoApp();/ Overrides/AFX

31、_VIRTUAL(CWalkLtDemoApp)public:virtual BOOL InitInstance();virtual int ExitInstance();/AFX_VIRTUAL;3、在 用程序的CWalkLtDemoDoc 文件中添加Geoset/ WalkLtDemoDoc.h : interface of the CWalkLtDemoDoc class class CWalkLtDemoDoc : public CDocumentprotected: / create from serialization onlyCWalkLtDemoDoc();DECLARE_DY

32、NCREATE(CWalkLtDemoDoc)/ Attributes public:/ add for walkLt.dll -CWalkMapGeoset m_geoset;/-/ Operations public:/ Overrides/ ClassWizard generated virtual function overrides /AFX_VIRTUAL(CWalkLtDemoDoc)public:virtual BOOL OnNewDocument(); virtual void Serialize(CArchive& ar); /AFX_VIRTUAL/ Implementa

33、tionpublic:virtual CWalkLtDemoDoc();#ifdef _DEBUGvirtual void AssertValid() const;virtual void Dump(CDumpContext& dc) const;#endif;4、在 用程序的CWalkLtDemoView:OnDraw(CDC* pDC)函數(shù)中添加代 / WalkLtDemoView.cpp : implementation of the CWalkLtDemoView class/#include stdafx.h#include WalkLtDemo.h#include WalkLtDe

34、moDoc.h#include WalkLtDemoView.h/ CWalkLtDemoViewIMPLEMENT_DYNCREATE(CWalkLtDemoView, CView)BEGIN_MESSAGE_MAP(CWalkLtDemoView, CView)END_MESSAGE_MAP()/ CWalkLtDemoView drawingvoid CWalkLtDemoView:OnDraw(CDC* pDC)CWalkLtDemoDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);/ TODO: add draw code for nativ

35、e data here/ add for walkLt.dll -pDoc-m_geoset.Draw(pDC, this);/-5、在CWalkLtDemoDoc:Serialize(CArchive& ar)函數(shù)中添加代 / WalkLtDemoDoc.cpp : implementation of the CWalkLtDemoDoc class#include stdafx.h#include WalkLtDemo.h#include WalkLtDemoDoc.h/ CWalkLtDemoDoc serializationvoid CWalkLtDemoDoc:Serialize(C

36、Archive& ar)/ add for walkLt.dll -if (ar.IsStoring() m_geoset.Save(ar);elsem_geoset.Load(ar);/-編譯連接后,運行:顯示:* 地圖縮放和全圖要求:1、 全 命令(在可 區(qū)可全 所有可 的地物和文字)2、通 鼠 放(以光 點 放中心,向外 放大,向內(nèi) 小, 距1.25 倍) 中將用到WalkLt的 和成 函數(shù):Point : Walk 數(shù)坐 ( x,y,z )Box : Walk 數(shù)矩形盒 ,含矩形的左下角和右上角的點坐 (CWalkMapLayer: Walk 數(shù)據(jù) ,包含地物、文字、式 等GetBox

37、: 取 內(nèi)所有地物和文字的外接矩形盒_min, _max )CWalkMapGeoset : Walk 工作空 ,包含所有的 、 形 示控制等。Device2Real : 坐 數(shù)坐 Real2Device : 數(shù)坐 坐 GetScale / SetScale : 取 / 置當前 形空 的 位與 數(shù) 位的尺度比GetPosition / SetPosition: 取 / 置當前 形空 的中心 數(shù)坐 GetFirstVisibleLayer: 取工作空 中的第一個可 GetNextVisibleLayer: 取工作空 中的下一個可 。典型用法:for (CWalkMapLayer *pLayer

38、= pGeoset-GetFirstVisibleLayer(); pLayer;pLayer = pGeoset-GetNextVisibleLayer(pLayer)通過滾輪縮放地圖添加 WINDOWS的 消息于CwalkLtDemoView中:/ WalkLtDemoView.h : interface of the CWalkLtDemoView class略添加 函數(shù):BOOL CWalkLtDemoView:OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)略全圖添加一個菜 ,并添加響 函數(shù)于CwalkLtDemoView中:voi

39、d CWalkLtDemoView:OnWholeview()略選中和查詢在 CwalkLtDemoView 中添加 3 個鼠 消息:BEGIN_MESSAGE_MAP(CWalkLtDemoView, CView)ON_WM_LBUTTONDOWN()ON_WM_LBUTTONUP()ON_WM_MOUSEMOVE()END_MESSAGE_MAP()移動鼠標,查詢地物所在層和式樣在鼠 移 響 函數(shù)中添加代 :void CWalkLtDemoView:OnMouseMove(UINT nFlags, CPoint point)static BOOL bTipsInitialed=FALSE;

40、CWalkMapGeoset *pGeoset = &GetDocument()-m_geoset;If(!bTipsInitialed)pGeoset-TipsInitial(this);/Tips初始化。只需要 行一次bTipsInitialed=TRUE;pGeoset-TipsShow(point, 2);CView:OnMouseMove(nFlags, point);選中地物和屬性查詢/ 拉矩形 中地物, 初始點和當前點CPoint gz_beginPt, gz_lastPt;int gz_onDragRect=0;void CWalkLtDemoView:OnMouseMove(

41、UINT nFlags, CPoint point)static BOOL bTipsInitialed=FALSE;CWalkMapGeoset *pGeoset = &GetDocument()-m_geoset;if (gz_onDragRect)CDC *pDC = this-GetDC();CRect traceRect, oldRect;traceRect.TopLeft()=gz_beginPt;traceRect.BottomRight()=point;traceRect.NormalizeRect();if (1!=gz_onDragRect)oldRect.TopLeft()=gz_beginPt;oldRect.BottomRight()=gz_lastPt;oldRect.NormalizeRect();gz_onDragRect=2;gz

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論