更多信息请访问:与华为官方共建的鸿蒙技术社区https://harmonyos.51cto.com简介冰盾盾买不到,金盾盾可以买不好意思,毛墩不能钩,橡皮泥不能捏,雪墩不能堆,但是我们可以用程序画一个冰刺;授人以鱼不如授人以渔。今天教大家如何手工制作冰盾盾!效果演示实现思路1建立坐标系工欲善其事,必先利其器。一些不错的工具,比如兵盾盾,可以画飞机、坦克、大炮;计算中心点的问题,这里的细节是中心线点和辅助线对齐,保证美观intcomponentHeight=EstimateSpec.getSize(heightEstimateConfig);this.width=componentWidth;this.height=componentHeight;centerX=this.width/2;centerY=this.height/2;//保证辅助线圆角centerX=((int)(centerX/50))*50;centerY=((int)(centerY/50))*50;Logger.d("宽度:"+宽度);Logger.d("身高:"+height);Logger.d("centerX:"+centerX);Logger.d("centerY:"+centerY);recordBg();//记录初始化时的坐标系和网格setEstimatedSize(EstimateSpec.getChildSizeWithMode(componentWidth,componentWidth,EstimateSpec.PRECISE),EstimateSpec.getChildSizeWithMode(componentHeight,componentHeight,EstimateSpec.PRECISE));returntrue;}初始化坐标系privatePointmCoo;//坐标系privatePicturemPicture;//坐标系和网格Canvas组件/***初始化时记录坐标系和网格*/privatevoidrecordBg(){//准备屏幕尺寸PointwinSize=newPoint(width,height);mCoo=newPoint(centerX,centerY);PaintgridPaint=newPaint();mPicture=新图片();画布recordCanvas=mPicture.beginRecording(winSize.getPointXToInt(),winSize.getPointYToInt());//绘制辅助网格HelpDraw2.drawGrid(recordCanvas,winSize,gridPaint);//绘制坐标系HelpDraw2.drawCoo(recordCanvas,mCoo,winSize,gridPaint);mPicture.endRecording();}在onDraw方法canvas.drawPicture(mPicture)中绘制坐标系;CanvasAuxiliaryClass/***AuxiliaryCanvas**@since2022-02-09*/publicclassHelpDraw2{/***绘制网格*/??publicstaticvoiddrawGrid(CanvasrecordCanvas,PointwinSize,Paintpaint){//初始化网格笔刷paint.setStrokeWidth(2);paint.setColor(颜色。灰色的);paint.setStyle(Paint.Style.STROKE_STYLE);//设置虚线效果newfloat[]{可见长度,不可见长度},偏移值paint.setPathEffect(newPathEffect(newfloat[]{10,5},0));recordCanvas.drawPath(HelpPath.gridPath(50,winSize),paint);}/***绘制坐标系*@paramrecordingcanvas*@paramcoo坐标系原点*@paramwinSize屏幕尺寸*@parampaintbrush*/publicstaticvoiddrawCoo(Canvasrecording,Pointcoo,PointwinSize,Paintpaint){//初始化网格画笔paint.setStrokeWidth(4);paint.setColor(Color.BLACK);paint.setStyle(Paint.Style.STROKE_STYLE);//设置虚线效果newfloat[]{可见长度,不可见长度},偏移值paint.setPathEffect(null);//画直线recording.drawPath(HelpPath.cooPath(coo,winSize),paint);//左箭头recording.drawLine(winSize.getPointX(),coo.getPointY(),winSize.getPointX()-40,coo.getPointY()-20,paint);recording.drawLine(winSize.getPointX(),coo.getPointY(),winSize.getPointX()-40,coo.getPointY()+20,油漆);//向下箭头recording.drawLine(coo.getPointX(),winSize.getPointY(),coo.getPointX()-20,winSize.getPointY()-40,paint);recording.drawLine(coo.getPointX(),winSize.getPointY(),coo.getPointX()+20,winSize.getPointY()-40,paint);//为坐标系绘制文本drawText4Coo(recording,coo,winSize,paint);}/***为坐标系绘制文字**@paramcanvascanvas*@paramcoo坐标系原点*@paramwinSize屏幕尺寸*@parampaintbrush*/privatestaticvoiddrawText4Coo(Canvascanvas,Pointcoo,PointwinSize,Paintpaint){//绘制文本paint.setTextSize(50);canvas.drawText(paint,"x",winSize.getPointX()-60,coo.getPointY()-40);canvas.drawText(paint,"y",coo.getPointX()-40,winSize.getPointY()-60);paint.setTextSize(25);//X正轴文本for(inti=1;i<(winSize.getPointX()-coo.getPointX())/50;i++){paint.setStrokeWidth(2);canvas.drawText(paint,100*i+"",coo.getPointX()-20+100*i,coo.getPointY()+40);paint.setStrokeWidth(5);canvas.drawLine(coo.getPointX()+100*i,coo.getPointY(),coo.getPointX()+100*i,coo.getPointY()-10,油漆);}//X负轴文字for(inti=1;i
