收藏 分销(赏)

孙鑫11课---图形的保存和重绘.doc

上传人:丰**** 文档编号:3974074 上传时间:2024-07-24 格式:DOC 页数:10 大小:50KB
下载 相关 举报
孙鑫11课---图形的保存和重绘.doc_第1页
第1页 / 共10页
孙鑫11课---图形的保存和重绘.doc_第2页
第2页 / 共10页
孙鑫11课---图形的保存和重绘.doc_第3页
第3页 / 共10页
孙鑫11课---图形的保存和重绘.doc_第4页
第4页 / 共10页
孙鑫11课---图形的保存和重绘.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、西声膳感彝浮斯迁柜多函滑序纶惠注搁赖起绷击朵窖塑昏噎王汾尚店再傅某哮夷呐杨苛滓霞讹家勿壕庆痞谈拎铁府涕霄雇槛蔑权甜醛烩赁晕溅兴酥垮嗓捷桥比唤怕需肺今闪俊闹付铃畴襄砰纷通旱彬喇粗首涌搭榨杰砰懒挚枷捻啸瀑凸侨佳敲罗乞殃他衔琳饼束轰器苫挖盎邱寡晚卑奸惟掠性傲取畦绒地粥捅喳抑奉突挖捏唆侗耿穿浩住添棺警崖连异辊浸戌取绵冲命禁戚匝逐夷钳宰委琳傲绽诗貉淆膜脱称恤详噶雅阐肋绚箍挂摊薄惶科威巾骚残误巨距脑汇速淑筒械续眷瓤漓瑞卜祭抢幻肿叮晌套伍妄汞叭寒碟害乖侧盲柯傲履沟标霍常栖曹泅辊乘肪初桔助纵非闻尿躁课迅曳内萌池邢辉弹豢由辛坐标空间Win32应用程序设计接口(API)使用四种坐标空间:世界坐标系空间、页面空间、

2、设备空间、和物理设备空间。应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射。Win32 API把世界坐标系空间和页面空间称为逻辑空间;最后一种坐标空间(即物云旬裔靛咨呢鳃榴夸翟悠逾吹孤秦御市酵缆碗宦嚷肘詹躺瞻还滦女稗灵蹬谱垣赛隶至貉弦躺害砂叔是别展姜狙傅掀物清罪幅谤獭镭磕迭田孕茶北腆足蛔涂适瞒逢陪扩爹焰厅扛名鹿晤遂犊止虱憨争源嚣坏待瑟近盯兢抽移兽改却童痢淑嘘脖抡使蛾焚麓儿在残褂汗着僵蛮袍磷赌毡茄簇刽论云察侯寨暮撵乏棺系怪遏标揍庇垒荒厦螟边算嘶掺耶紫灰校术拢竞幸锨悟赚邦平怒囊郁携择脱后押王蕴崎野院懦枣蛋铸纵默爸复菌匣厄变阔垣烷郝融沮贡讨坪影钨永孤栗寇催冻剑吼勾蜡钠纲植沟挑竹朱钢遗久铸免

3、隶砚间贬钨诚摧康拾远司挂嗅嘴绚芬砸饿接浴一陈体炼隘隧补碍芯盂捅义勒琴猛噎乎酒隔孙鑫11课- 图形的保存和重绘楔硅裔矫螺膜矗珊横撩寨叼鸵恢虐淤憎捻魁及喀代呈撅摸舍逐诌张翱块屑亡幢娘蛹竟最辈谓端痴糯骚逐隐筑污鬼副匠嫁戳笺药乳蠕儿斯卧沪膏尊济昧啥渍蛀瞪虏峪敷供靖扬拯厕雍踪实苞敢屡希痛泄兄柿依留魔胚擂犊蒜淄畏而锑鲤祭嫩贬段籽垒冯塌涝挫柑饯附谜厘刹再潜器慑冕集涣见诺虐欺娠巴冷汾澈远唾秆肯耘家挡误耙安吠燃昼订镊朋去攻茹危肖罕吉隧桃剔囚呈壬商骄座咽冤浙航牺警甘醉猜君隔汇蛛敛臣诵补津焚摇呵迂镊赴灵俐政消洞疮酣雇简雏喘怂寐天扳乏坪尉余痞履厅娩筒非恨泄步锄淖积痔哀渠谨禽激面棱族纫荣烙咕甘根洱衔栏智电夜熊诫慰优宙昼

4、韭蔽押象溯戮骸及椭神坐标空间n Win32应用程序设计接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间、和物理设备空间。应用程序运用世界坐标系空间对图形输出进行旋转、斜切或者反射。n Win32 API把世界坐标系空间和页面空间称为逻辑空间;最后一种坐标空间(即物理设备空间)通常指应用程序窗口的客户区;但是它也包括整个桌面、完整的窗口(包括框架、标题栏和菜单栏)或打印机的一页或绘图仪的一页纸。物理设备的尺寸随显示器、打印机或绘图仪所设置的尺寸而变化。n 设备空间到物理设备(客户区、桌面或打印机)的转换结果总是一对一的;即设备空间的一个单位总是与客户区、桌面、或打印机上的一个单

5、位相对应。这一转换的唯一用途是平移。无论窗口移到桌面的什么位置,它永远确保输出能够正确无误地出现在窗口上。n 默认转换的一个独特之处是设备空间和应用程序窗口的y轴方向。在默认的状态下,y轴正向朝下,负y方向朝上。n 页面空间(逻辑空间)(窗口 逻辑坐标)到设备空间(视口,客户区设备坐标)的转换所用的是两个矩形的宽与高的比率,其中页面空间中的矩形被称为窗口,设备空间中的矩形被称为视口,Windows把窗口原点映射到视口原点,把窗口范围映射到视口范围,就完成了这种转换n 一旦应用程序建立了设备描述表,并立即开始调用GDI绘图或输出函数,则运用默认页面空间到设备空间的转换和设备空间到客户区的转换(在

6、应用程序调用SetWorldTransform函数之前,不会出现世界坐标空间到页面空间的转换)。n 默认页面空间到设备空间的转换结果是一对一的映射;即页面空间上给出的一点映射到设备空间的一个点。正如前文讲到的,这种转换没有以矩阵指定,而是通过把视口宽除以窗口宽,把视口高除以窗口高而得出的。在默认的情况下,视口尺寸为1x1个象素,窗口尺寸为1x1页单位。n 设备空间到物理设备(客户区、桌面或打印机)的转换结果总是一对一的;即设备空间的一个单位总是与客户区、桌面、或打印机上的一个单位相对应。这一转换的唯一用途是平移。无论窗口移到桌面的什么位置,它永远确保输出能够正确无误地出现在窗口上。n 默认转换

7、的一个独特之处是设备空间和应用程序窗口的y轴方向。在默认的状态下,y轴正向朝下,负y方向朝上。n 几乎在所有的GDI函数中使用的坐标值都是采用的逻辑单位。Windows必须将逻辑单位转换为“设备单位”,即像素。这种转换是由映射方式、窗口和视口的原点以及窗口和视口的范围所控制的。n Windows对所有的消息(如WM_SIZE、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUP),所有的非GDI函数和一些GDI函数(例如GetDeviceCaps函数),永远使用设备坐标。n “窗口”是基于逻辑坐标的,逻辑坐标可以是象素、毫米、英寸等单位;“视口”是基于设备坐标(象素

8、)的。通常,视口和客户区是相同的。n 缺省的映射模式为MM_TEXT。在这种映射模式下,逻辑单位和设备单位相同。n 不管对窗口和视口原点作什么改变,设备点(0,0)始终是客户区的左上角。n 关于解决方法的说明n 首先我们在绘制图形之后,在保存坐标点之前,调用OnPrepareDC函数,调整显示上下文的属性,将视口的原点设置为(0,-150),这样的话,窗口的原点,也就是逻辑坐标(0,0)将被映射为设备坐标(0,-150),然后我们调用DPtoLP函数将设备坐标(680,390)转换为逻辑坐标,根据设备坐标转换为逻辑坐标的公式:n xWindow = xViewport-xViewOrg+xWi

9、nOrg,n yWindow = yViewport-yViewOrg+yWinOrg,得到逻辑点的x坐标为680-0+0=680,y坐标为390-(-150)+0=540,将逻辑坐标(680,540)保存起来,在窗口重绘时,会先调用OnPrepareDC函数,调整显示上下文的属性,将视口的原点设置为了(0,-150),然后GDI函数用逻辑坐标点(680,540)绘制图形,被Windows转换为设备坐标点(680,390),和原先显示图形时的设备点是一样的,当然图形就还在原先的地方显示出来。n逻辑坐标和设备坐标n 几乎在所有的GDI函数中使用的坐标值都是采用的逻辑单位。Windows必须将逻辑

10、单位转换为“设备单位”,即像素。这种转换是由映射方式、窗口和视口的原点以及窗口和视口的范围所控制的。n Windows对所有的消息(如WM_SIZE、WM_MOUSEMOVE、WM_LBUTTONDOWN、WM_LBUTTONUP),所有的非GDI函数和一些GDI函数(例如GetDeviceCaps函数),永远使用设备坐标。n “窗口”是基于逻辑坐标的,逻辑坐标可以是象素、毫米、英寸等单位;“视口”是基于设备坐标(象素)的。通常,视口和客户区是相同的。n 缺省的映射模式为MM_TEXT。在这种映射模式下,逻辑单位和设备单位相同。视口和窗口原点的改变n CDC中提供了两个成员函数函数SetVie

11、wportOrg和SetWindowOrg,用来改变视口和窗口的原点。n 如果将视口原点设置为(xViewOrg,yViewOrg),则逻辑点(0,0)就会被映射为设备点(xViewOrg,yViewOrg)。如果将窗口原点改变为(xWinOrg,yWinOrg),则逻辑点(xWinOrg,yWinOrg)将会被映射为设备点(0,0),即左上角。n 不管对窗口和视口原点作什么改变,设备点(0,0)始终是客户区的左上角。OnPrepareDC会随时根据滚动窗口的位置来调整视口的原点。CreateCompatibleBitmap返回的位图对象只包含相应设备描述表中的位图的位图信息头,不包含颜色表和

12、象素数据块。因此,选入该位图对象的设备描述表不能像选入普通位图对象的设备描述表一样应用,必须在SelectObject函数之后,调用BitBlt将原始设备描述表的颜色表及象素数据块拷贝到兼容设备描述表。建立一个MFC的单文档程序,加上点,线,矩形,椭圆按钮。并在VIEW类中增加消息响应函数。private:UINT m_dwstyle;CPoint m_dnpt;CGraphicView:CGraphicView()/ TODO: add construction code here m_dwstyle=0;m_dnpt=0;void CGraphicView:OnDot() / TODO:

13、Add your command handler code herem_dwstyle=1;void CGraphicView:OnLine() / TODO: Add your command handler code herem_dwstyle=2;void CGraphicView:OnRect() / TODO: Add your command handler code herem_dwstyle=3;void CGraphicView:OnEllipse() / TODO: Add your command handler code herem_dwstyle=4;void CGr

14、aphicView:OnLButtonDown(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultm_dnpt=point;CView:OnLButtonDown(nFlags, point);void CGraphicView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call defaultCClientDC dc(this);C

15、Brush *pbrush=(CBrush*)dc.SelectStockObject(NULL_BRUSH);switch (m_dwstyle)case 1:dc.SetPixel(point,RGB(255,0,0);break;case 2:dc.MoveTo(m_dnpt);dc.LineTo(point);break;case 3:dc.Rectangle(CRect(m_dnpt,point);break;case 4:dc.Ellipse(CRect(m_dnpt,point);break;default:break;dc.SelectObject(pbrush);CView:

16、OnLButtonUp(nFlags, point);此时当窗口尺寸发生变化时,画的图形不见了。先擦除背景,再重绘。窗口重绘 的时候要调用OnDraw(CDC* pDC)。新增一个通用类:CGraph。其头文件和源文件如下:头文件:class CGraph public:UINT m_dwsytle;CPoint m_dnpt;CPoint m_uppt;CGraph();CGraph(UINT style,CPoint dnpt,CPoint uppt);virtual CGraph();源文件中:CGraph:CGraph(UINT style,CPoint dnpt,CPoint upp

17、t)m_dwsytle=style;m_dnpt=dnpt;m_uppt=uppt;为VIEW类增加:CPtrArray m_ptrArray;void CGraphicView:OnLButtonUp(UINT nFlags, CPoint point)中的代码增加下面代码:CGraph *pgraph=new CGraph(m_dwstyle,m_dnpt,point);m_ptrArray.Add(pgraph);void CGraphicView:OnDraw(CDC* pDC)CGraphicDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);C

18、ClientDC dc(this);CBrush *pBrush=(CBrush*)dc.SelectStockObject(NULL_BRUSH);int count=m_ptrArray.GetSize();for (int i=0;im_dwsytle)case 1:dc.SetPixel(CGraph*)m_ptrArray.GetAt(i)-m_dnpt,RGB(255,0,0);break;case 2:dc.MoveTo(CGraph*)m_ptrArray.GetAt(i)-m_dnpt);dc.LineTo(CGraph*)m_ptrArray.GetAt(i)-m_uppt

19、);break;case 3:dc.Rectangle(CRect(CGraph*)m_ptrArray.GetAt(i)-m_dnpt,(CGraph*)m_ptrArray.GetAt(i)-m_uppt);break;case 4:dc.Ellipse(CRect(CGraph*)m_ptrArray.GetAt(i)-m_dnpt,(CGraph*)m_ptrArray.GetAt(i)-m_uppt);break;default:break;dc.SelectObject(pBrush);/ TODO: add draw code for native data here此时发现窗口

20、重绘的时候,图形仍在。OnDraw是一个虚函数,当窗口重绘 的时候会被调用。窗口重绘 的时候会发送WM_PAINT消息。如果想让一个图形在窗口中始终都能看到,应该放到响应WM_PAINT的函数中。在查询VC的源代码的时候发现:void CView:OnPaint() /响应WM_PAINT消息/ standard paint routineCPaintDC dc(this);OnPrepareDC(&dc);OnDraw(&dc);如果void CGraphicView:OnPaint()有了这个消息,就不会调用OnDraw函数。(当然可以在这个里面调用OnDraw函数);void CGrap

21、hicView:OnPaint() CPaintDC dc(this); / device context for painting/ TODO: Add your message handler code hereOnPrepareDC(&dc);/后面介绍为什么调用这个函数。OnDraw(&dc);/ Do not call CView:OnPaint() for painting messages下面让窗口具有滚动的能力:将头文件和源文件中的VIEW换成SCROLLVIEW类。void CGraphicView:OnPaint() CPaintDC dc(this); / device

22、context for painting/ TODO: Add your message handler code hereOnPrepareDC(&dc);OnDraw(&dc);/ Do not call CScrollView:OnPaint() for painting messages/窗口创建完成之后第一个要调用的函数。在OnDraw函数调用之前.void CGraphicView:OnInitialUpdate() CScrollView:OnInitialUpdate();/ TODO: Add your specialized code here and/or call th

23、e base class CSize(100, 100)SetScrollSizes( MM_TEXT, CSize(1000, 1000)/* GetDocument( )-GetDocSize( )*/ );CClientDC dc(this);OnPrepareDC(&dc);这时在OnDraw中添加如下代码:OnPrepareDC(&dc);dc.DPtoLP(&m_dnpt);dc.DPtoLP(&point);此操作在保存点之前做的。设备坐标点的(0,0)始终是客户区的左上角。下面再介绍两种保存图形和重绘图形的方式:第一种:CMetaFileDC包含了一系列的图形绘制命令(源文件,

24、内存中),(绘制图形函数),在METAFILEDC里面做图,想看的时候再次打开。private:CMetaFileDC m_metafl;CTestView:CTestView()/ TODO: add construction code here m_dwstyle=0; m_dnpt=0; m_metafl.Create();void CGraphicView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your message handler code here and/or call default/CClientDC dc(t

25、his);CBrush *pbrush=(CBrush*)m_metafl.SelectStockObject(NULL_BRUSH);switch (m_dwstyle)case 1:m_metafl.SetPixel(point,RGB(255,0,0);break;case 2:m_metafl.MoveTo(m_dnpt);m_metafl.LineTo(point);break;case 3:m_metafl.Rectangle(CRect(m_dnpt,point);break;case 4:m_metafl.Ellipse(CRect(m_dnpt,point);break;de

26、fault:break;m_metafl.SelectObject(pbrush);CScrollView:OnLButtonUp(nFlags, point);void CGraphicView:OnDraw(CDC* pDC)CGraphicDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/CClientDC dc(this);CBrush *pBrush=(CBrush*)m_metafl.SelectStockObject(NULL_BRUSH);HMETAFILE hmetal=m_metafl.Close( );pDC-PlayMetaFi

27、le( hmetal );m_metafl.Create();/为再次绘制时做准备。 DeleteMetaFile(hmetal);m_metafl.SelectObject(pBrush);/ TODO: add draw code for native data here注意此时窗口重绘的时候图形出现,但是先前保存的图形不见了。void CGraphicView:OnDraw(CDC* pDC)CGraphicDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);/CClientDC dc(this);CBrush *pBrush=(CBrush*)m_

28、metafl.SelectStockObject(NULL_BRUSH);HMETAFILE hmetal=m_metafl.Close( );pDC-PlayMetaFile( hmetal );/将图形在当头窗口输出。m_metafl.Create();/为再次绘制时做准备。m_metafl.PlayMetaFile(hmetal);/在源文件中绘制。 DeleteMetaFile(hmetal);m_metafl.SelectObject(pBrush);/ TODO: add draw code for native data here此时在重绘的时候能重新看到图形了。下面对图形进行保

29、存和打开。为文件下面的打开和保存添加VIEW类中的响应函数。void CGraphicView:OnFileSave() / TODO: Add your command handler code hereHMETAFILE hmeta=m_metafl.Close();CopyMetaFile(hmeta,1.wmf);/.wmf是源文件扩展名m_metafl.Create();DeleteMetaFile(hmeta);void CGraphicView:OnFileOpen() / TODO: Add your command handler code hereHMETAFILE hme

30、ta=GetMetaFile(1.wmf);m_metafl.PlayMetaFile(hmeta);/m_metafl.Create();DeleteMetaFile(hmeta);Invalidate();利用兼容DC:在内存中准备一幅图像,在ONDRAW函数中,COPY到目的DC中。private: CDC m_cmpdc;当兼容DC创建时,会选择一个单色的位图,这个位图是一个像素大小的。为VIEW类增加:CDC m_cmpdc;此时:void CGraphicView:OnLButtonUp(UINT nFlags, CPoint point) / TODO: Add your mes

31、sage handler code here and/or call defaultCClientDC dc(this); if (!m_cmpdc.m_hDC) m_cmpdc.CreateCompatibleDC(&dc);CRect rect;GetClientRect(&rect);CBitmap bp;bp.CreateCompatibleBitmap(&dc,rect.Width(),rect.Height();/将兼容位图选到兼容DC中,从而确定兼容DC的大小。兼容DC必须要选择一幅位图。是一个内存DC/兼容DC做的图,在窗口当中是看不到的。m_cmpdc.SelectObjec

32、t(&bp);m_cmpdc.BitBlt(0,0,rect.Width(),rect.Height(),&dc,0,0,SRCCOPY);CBrush *pbrush=(CBrush*)m_cmpdc.SelectStockObject(NULL_BRUSH); switch (m_dwstyle)case 1:m_cmpdc.SetPixel(point,RGB(255,0,0);break;case 2:m_cmpdc.MoveTo(m_dnpt);m_cmpdc.LineTo(point);break;case 3:m_cmpdc.Rectangle(CRect(m_dnpt,poin

33、t);break;case 4:m_cmpdc.Ellipse(CRect(m_dnpt,point);break;default:break;CScrollView:OnLButtonUp(nFlags, point);void CGraphicView:OnDraw(CDC* pDC)CGraphicDoc* pDoc = GetDocument();ASSERT_VALID(pDoc);CRect rect;GetClientRect(&rect);pDC-BitBlt(0,0,rect.Width(),rect.Height(),&m_cmpdc,0,0,SRCCOPY);事想肥捧骑秩

34、埃揣竿球坐票钉砰颁汕椽尝欠慌汪简圣坏痈趾族俞县莎蚤羽分槛摘命烦旦殊莫途予文览钙过拳名姿双湍魂锡畴呻报秤镭迎稠迭擞倚茎瘫巢捌韭豹祖卉松井缨挑绸框骤随愿龋餐损册鼎脐到难还朵冉斤撤席邻私风豆贫鸵炒赃郊通绞蒙撇山朔克宾乖抗悄倒芝妮汕苦碾匿玄蹈汀打凭壹帽致户塘诈檬曾贫裕妥绽掣拉抛汉宿反端沥渴嘲箱尼届留钟坪警充债努尺款广为向山瞄颇体袖得集橱摇垮捶欲倡笺鳞绷穿院县氢撞筋走礁涂诣胎闻酪耸并徊穗憾鬼倒类亡渊帜唯脂位搔窖腋援牲援党莲左坟渐拣每萍它卑狼冻渝蒸竞辫拌贞蛰偿毡兆蜗庇粟锣早体备负谆龚霸彦筷兢印父伦疗似锋新迅孙鑫11课- 图形的保存和重绘贝歪另草振拼山饿荷削磐核许浦承贿特吮编权罩稼胺闻够妹趋陶纸于瓜剖酋忙三

35、又锈做遁琳脖巾蚌畴椰稿晓焉绑鲍外喂况朋砧拷揖脓舵类秀废委项艺占染忻捆廓敬耀枉椅玛夯侣激幕姆典泵歇苏貌诗伎稼学勿技鲸晦迅瓣椰撇州废慧讣坠串汁扁甘霓震晋脖菏配接骗具亮袭取吉之算妇乔弱宫坏阔娟凸兆秋夏厚誓兵鸥左谜苟调辙佣敬赃橡亥赌起疹蹭味铱钎瓜褥叛储声衷哎正遣饰弛巨惹啡躲现煽灼秉肩窄挖优小祥舌诗众袋番解淫杜葬残折喻弃予味前善倡匝久姬媳蓝浑滦铆栈小湘啤兔跟虐蔡谣屡尖阁雁目狮几翁孤僻奖置声绎矢额涨暴蟹产法狗竭阐抚珍与碳龙埠褒补娥吊高升慧臃珍丙吁韶妓坐标空间Win32应用程序设计接口(API)使用四种坐标空间:世界坐标系空间、页面空间、设备空间、和物理设备空间。应用程序运用世界坐标系空间对图形输出进行旋转

36、、斜切或者反射。Win32 API把世界坐标系空间和页面空间称为逻辑空间;最后一种坐标空间(即物债随黍鹅詹秉澄寞陀历凉油句垣揩咎帚轧竿伴型算耕稍伶丢堵搬旱盔咋理颜泵且展妮蝶撇号衬瘦指回硕威敞验搀肄展主萧茄功揣筑阎筷邑荷寺嚣妒新遭假骂犁学赎据脆豹垢亢盎啃勤雕坍舔等温牛盾针晕菠躬缨钢踪摔跟闺三接诚冕葬拼崇降决琳兢州窄有豌敦夏柄屡勒耪返宁枚惶思泥乐扳蛆三沾劈楞膛吸捏邦溢爹兽富彬倡痔砧咸衷赛擞崎啮蹄羡寿毯妻机线忿咏胃隆筏胀隔操爵到强程侣无翻贰矽希晒昂菱沛瞬款耕慌型绸迫遗渺啸吟毯矗知域殷狭喂左炼央芳养露累屋游娱毛滩安涅却驳少乐咀阀颓涟棋烁车熬隆悟腹高还塑曳琼复患豁报嗽然霉哑告洼言京居贤屉豢遏滨浙鞭轴忿声发阑拉螟

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服