Paint的詳解

在Paint中有很多的屬性可以設(shè)置挽唉,比如可以設(shè)置陰影称勋,顏色過濾等等,這些會產(chǎn)生不同的奇妙效果顷扩,今天就對各種屬性探索一下啸澡。
方法一:
1 //設(shè)置繪制的顏色袖订,a代表透明度,r嗅虏,g洛姑,b代表顏色值。 2 setARGB(int a,int r,int g,int b);

這個(gè)不多說了皮服,還有兩個(gè)類似的方法楞艾,將設(shè)置alpha和rgb分割開來了。注意的是這里的a值是0~255的范圍龄广,不是小數(shù)硫眯。
方法二:
//設(shè)置是否使用抗鋸齒功能,會消耗較大資源择同,繪制圖形速度會變慢两入。setAntiAlias(boolean aa);

也不多說,你可以試驗(yàn)一下效果敲才,設(shè)置后會平滑一些裹纳;
方法三:
1 //設(shè)定是否使用圖像抖動(dòng)處理,會使繪制出來的圖片顏色更加平滑和飽滿紧武,圖像更加清晰 2 setDither(boolean dither);

方法四:
1 //設(shè)置MaskFilter剃氧,可以用不同的MaskFilter實(shí)現(xiàn)濾鏡的效果,如濾化阻星,立體等 2 setMaskFilter(MaskFilter maskfilter);

MaskFilter類可以為Paint分配邊緣效果朋鞍。對MaskFilter的擴(kuò)展可以對一個(gè)Paint邊緣的alpha通道應(yīng)用轉(zhuǎn)換。Android包含了下面幾種MaskFilter:BlurMaskFilter 指定了一個(gè)模糊的樣式和半徑來處理Paint的邊緣。EmbossMaskFilter 指定了光源的方向和環(huán)境光強(qiáng)度來添加浮雕效果番舆。要應(yīng)用一個(gè)MaskFilter酝碳,可以使用setMaskFilter方法,并傳遞給它一個(gè)MaskFilter對象恨狈。下面的例子是對一個(gè)已經(jīng)存在的Paint應(yīng)用一個(gè)EmbossMaskFilter:


復(fù)制代碼

1 // 設(shè)置光源的方向 2 float[] direction = new float[]{ 1, 1, 1 }; 3 4 //設(shè)置環(huán)境光亮度 5 float light = 0.4f; 6 7 // 選擇要應(yīng)用的反射等級 8 float specular = 6; 9 10 // 向mask應(yīng)用一定級別的模糊11 float blur = 3.5f;12 13 EmbossMaskFilter emboss=new EmbossMaskFilter(direction,light,specular,blur);14 15 // 應(yīng)用mask 16 myPaint.setMaskFilter(emboss);


復(fù)制代碼

可以看一下下面的圖疏哗,是不是有浮雕的效果?禾怠?



再看下面使用BlurMaskFilter:
1 //前面一個(gè)控制陰影的寬度返奉,后面一個(gè)參數(shù)控制陰影效果2 maskFilter = new BlurMaskFilter(10, BlurMaskFilter.Blur.SOLID);


是不是有陰影效果呢?吗氏?
方法五:
1 //設(shè)置顏色過濾器芽偏,可以在繪制顏色時(shí)實(shí)現(xiàn)不用顏色的變換效果2 setColorFilter(ColorFilter colorfilter);

這個(gè)方法也值得試驗(yàn)一下:
MaskFilter是對一個(gè)Paint的alpha通道的轉(zhuǎn)換,而ColorFilter則是對每一個(gè)RGB通道應(yīng)用轉(zhuǎn)換弦讽。所有由ColorFilter所派生的類在執(zhí)行它們的轉(zhuǎn)換時(shí)污尉,都會忽略alpha通道。
這個(gè)貌似比較麻煩往产,改天再說被碗。
方法六:
1 //設(shè)置繪制路徑的效果,如點(diǎn)畫線等2 setPathEffect(PathEffect effect);

又是一個(gè)很好玩的方法:
到目前為止仿村,所有的效應(yīng)都會影響到Paint填充圖像的方式锐朴;PathEffect是用來控制繪制輪廓(線條)的方式。PathEffect對于繪制Path基本圖形特別有用蔼囊,但是它們也可以應(yīng)用到任何Paint中從而影響線條繪制的方式焚志。使用PathEffect,可以改變一個(gè)形狀的邊角的外觀并且控制輪廓的外表畏鼓。Android包含了多個(gè)PathEffect酱酬,包括:1)CornerPathEffect 可以使用圓角來代替尖銳的角從而對基本圖形的形狀尖銳的邊角進(jìn)行平滑。
2)DashPathEffect 可以使用DashPathEffect來創(chuàng)建一個(gè)虛線的輪廓(短橫線/小圓點(diǎn))滴肿,而不是使用實(shí)線岳悟。你還可以指定任意的虛/實(shí)線段的重復(fù)模式。
3) DiscretePathEffect 與DashPathEffect相似泼差,但是添加了隨機(jī)性贵少。當(dāng)繪制它的時(shí)候,需要指定每一段的長度和與原始路徑的偏離度堆缘。
4)PathDashPathEffect 這種效果可以定義一個(gè)新的形狀(路徑)并將其用作原始路徑的輪廓標(biāo)記滔灶。下面的效果可以在一個(gè)Paint中組合使用多個(gè)Path Effect。1)SumPathEffect 順序地在一條路徑中添加兩種效果吼肥,這樣每一種效果都可以應(yīng)用到原始路徑中录平,而且兩種結(jié)果可以結(jié)合起來麻车。2)ComposePathEffect 將兩種效果組合起來應(yīng)用,先使用第一種效果斗这,然后在這種效果的基礎(chǔ)上應(yīng)用第二種效果动猬。對象形狀的PathEffect的改變會影響到形狀的區(qū)域。這就能夠保證應(yīng)用到相同形狀的填充效果將會繪制到新的邊界中表箭。使用setPathEffect方法可以把PathEffect應(yīng)用到Paint對象中赁咙,如下所示:
1 paint.setPathEffect(new CornerPathEffect(10));

其他效果懶得測試了,這個(gè)在模擬器上跑的時(shí)候效果也不明顯免钻,但是真機(jī)上跑的時(shí)候的確圓滑了許多彼水,看上去很舒服
方法七:
1 //設(shè)置圖形重疊時(shí)的處理方式,如合并极舔,取交集或并集凤覆,經(jīng)常用來制作橡皮的擦除效果2 setXfermode(Xfermode xfermode);

橡皮擦,這是個(gè)好方法啊拆魏,看看盯桦。
可以通過修改Paint的Xfermode來影響在Canvas已有的圖像上面繪制新的顏色的方式。在正常的情況下稽揭,在已有的圖像上繪圖將會在其上面添加一層新的形狀俺附。如果新的Paint是完全不透明的,那么它將完全遮擋住下面的Paint溪掀;如果它是部分透明的,那么它將會被染上下面的顏色步鉴。下面的Xfermode子類可以改變這種行為:1)AvoidXfermode 指定了一個(gè)顏色和容差揪胃,強(qiáng)制Paint避免在它上面繪圖(或者只在它上面繪圖)。2)PixelXorXfermode 當(dāng)覆蓋已有的顏色時(shí)氛琢,應(yīng)用一個(gè)簡單的像素XOR操作喊递。3)PorterDuffXfermode 這是一個(gè)非常強(qiáng)大的轉(zhuǎn)換模式,使用它阳似,可以使用圖像合成的16條Porter-Duff規(guī)則的任意一條來控制Paint如何與已有的Canvas圖像進(jìn)行交互骚勘。要應(yīng)用轉(zhuǎn)換模式,可以使用setXferMode方法撮奏,如下所示:
1 AvoidXfermode avoid = new AvoidXfermode(Color.BLUE, 10, AvoidXfermode.Mode. AVOID); 2 borderPen.setXfermode(avoid);

這里可以實(shí)現(xiàn)完美的橡皮擦功能俏讹!代碼異常簡單:
1 Xfermode xFermode = new PorterDuffXfermode(PorterDuff.Mode.CLEAR);2 paint.setXfermode(xFermode);

這是使用的最后一個(gè)子類,關(guān)于16條Porter-Duff規(guī)則畜吊,如下:


復(fù)制代碼

1 private static final Xfermode[] sModes = { 2 new PorterDuffXfermode(PorterDuff.Mode.CLEAR), 3 new PorterDuffXfermode(PorterDuff.Mode.SRC), 4 new PorterDuffXfermode(PorterDuff.Mode.DST), 5 new PorterDuffXfermode(PorterDuff.Mode.SRC_OVER), 6 new PorterDuffXfermode(PorterDuff.Mode.DST_OVER), 7 new PorterDuffXfermode(PorterDuff.Mode.SRC_IN), 8 new PorterDuffXfermode(PorterDuff.Mode.DST_IN), 9 new PorterDuffXfermode(PorterDuff.Mode.SRC_OUT),10 new PorterDuffXfermode(PorterDuff.Mode.DST_OUT),11 new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP),12 new PorterDuffXfermode(PorterDuff.Mode.DST_ATOP),13 new PorterDuffXfermode(PorterDuff.Mode.XOR),14 new PorterDuffXfermode(PorterDuff.Mode.DARKEN),15 new PorterDuffXfermode(PorterDuff.Mode.LIGHTEN),16 new PorterDuffXfermode(PorterDuff.Mode.MULTIPLY),17 new PorterDuffXfermode(PorterDuff.Mode.SCREEN)18 };


復(fù)制代碼

它們每個(gè)顯示的效果具體如下:



第一個(gè)就是Clear效果泽疆!
上面很多的圖都是由SDK APIDemos運(yùn)行所得~~有時(shí)間仔細(xì)研究一下Graphics中的每個(gè)Activity。

Java代碼
收藏代碼

/**
* Paint類介紹
*
* Paint即畫筆玲献,在繪圖過程中起到了極其重要的作用殉疼,畫筆主要保存了顏色梯浪,
* 樣式等繪制信息,指定了如何繪制文本和圖形瓢娜,畫筆對象有很多設(shè)置方法挂洛,
* 大體上可以分為兩類,一類與圖形繪制相關(guān)眠砾,一類與文本繪制相關(guān)抹锄。
*
* 1.圖形繪制
* setARGB(int a,int r,int g,int b);
* 設(shè)置繪制的顏色,a代表透明度荠藤,r伙单,g,b代表顏色值哈肖。
*
* setAlpha(int a);
* 設(shè)置繪制圖形的透明度吻育。
*
* setColor(int color);
* 設(shè)置繪制的顏色,使用顏色值來表示淤井,該顏色值包括透明度和RGB顏色布疼。
*
* setAntiAlias(boolean aa);
* 設(shè)置是否使用抗鋸齒功能,會消耗較大資源币狠,繪制圖形速度會變慢游两。
*
* setDither(boolean dither);
* 設(shè)定是否使用圖像抖動(dòng)處理,會使繪制出來的圖片顏色更加平滑和飽滿漩绵,圖像更加清晰
*
* setFilterBitmap(boolean filter);
* 如果該項(xiàng)設(shè)置為true贱案,則圖像在動(dòng)畫進(jìn)行中會濾掉對Bitmap圖像的優(yōu)化操作,加快顯示
* 速度止吐,本設(shè)置項(xiàng)依賴于dither和xfermode的設(shè)置
*
* setMaskFilter(MaskFilter maskfilter);
* 設(shè)置MaskFilter宝踪,可以用不同的MaskFilter實(shí)現(xiàn)濾鏡的效果,如濾化碍扔,立體等 *
* setColorFilter(ColorFilter colorfilter);
* 設(shè)置顏色過濾器瘩燥,可以在繪制顏色時(shí)實(shí)現(xiàn)不用顏色的變換效果
*
* setPathEffect(PathEffect effect);
* 設(shè)置繪制路徑的效果,如點(diǎn)畫線等
*
* setShader(Shader shader);
* 設(shè)置圖像效果不同,使用Shader可以繪制出各種漸變效果
*
* setShadowLayer(float radius ,float dx,float dy,int color);
* 在圖形下面設(shè)置陰影層厉膀,產(chǎn)生陰影效果,radius為陰影的角度二拐,dx和dy為陰影在x軸和y軸上的距離服鹅,color為陰影的顏色
*
* setStyle(Paint.Style style);
* 設(shè)置畫筆的樣式,為FILL卓鹿,F(xiàn)ILL_OR_STROKE菱魔,或STROKE
*
* setStrokeCap(Paint.Cap cap);
* 當(dāng)畫筆樣式為STROKE或FILL_OR_STROKE時(shí),設(shè)置筆刷的圖形樣式吟孙,如圓形樣式
* Cap.ROUND,或方形樣式Cap.SQUARE
*
* setSrokeJoin(Paint.Join join);
* 設(shè)置繪制時(shí)各圖形的結(jié)合方式澜倦,如平滑效果等
*
* setStrokeWidth(float width);
* 當(dāng)畫筆樣式為STROKE或FILL_OR_STROKE時(shí)聚蝶,設(shè)置筆刷的粗細(xì)度
*
* setXfermode(Xfermode xfermode);
* 設(shè)置圖形重疊時(shí)的處理方式,如合并藻治,取交集或并集碘勉,經(jīng)常用來制作橡皮的擦除效果
*
* 2.文本繪制
* setFakeBoldText(boolean fakeBoldText);
* 模擬實(shí)現(xiàn)粗體文字,設(shè)置在小字體上效果會非常差
*
* setSubpixelText(boolean subpixelText);
* 設(shè)置該項(xiàng)為true桩卵,將有助于文本在LCD屏幕上的顯示效果
*
* setTextAlign(Paint.Align align);
* 設(shè)置繪制文字的對齊方向
*

  • setTextScaleX(float scaleX);
  • 設(shè)置繪制文字x軸的縮放比例验靡,可以實(shí)現(xiàn)文字的拉伸的效果
  • setTextSize(float textSize);
  • 設(shè)置繪制文字的字號大小
  • setTextSkewX(float skewX);
  • 設(shè)置斜體文字,skewX為傾斜弧度
  • setTypeface(Typeface typeface);
  • 設(shè)置Typeface對象雏节,即字體風(fēng)格胜嗓,包括粗體,斜體以及襯線體钩乍,非襯線體等
  • setUnderlineText(boolean underlineText);
  • 設(shè)置帶有下劃線的文字效果
  • setStrikeThruText(boolean strikeThruText);
  • 設(shè)置帶有刪除線的效果
 */  

Java代碼
收藏代碼

private class MyView2 extends View {

    public MyView2(Context context) {  

        super(context);  

    }  

    @Override  
    protected void onDraw(Canvas canvas)  

    {  

        super.onDraw(canvas);  

        canvas.drawColor(Color.WHITE);  

        Paint paint = new Paint();  

        paint.setAntiAlias(true);  

        paint.setColor(Color.RED);  

        paint.setStyle(Paint.Style.STROKE);//設(shè)置為空心  

        paint.setStrokeWidth(3);  

        canvas.drawCircle(40, 40, 30, paint);  

        canvas.drawRect(10, 90, 70, 150, paint);  

        canvas.drawRect(10, 170, 70, 200, paint);  

        canvas.drawOval(new RectF(10, 220, 70, 250), paint);  

        Path path = new Path();//三角形  

        path.moveTo(10, 330);  

        path.lineTo(70, 330);  

        path.lineTo(40, 270);  

        path.close();  

        canvas.drawPath(path, paint);  

        Path path1 = new Path();//梯形  

        path1.moveTo(10, 410);//繪畫基點(diǎn)  

        path1.lineTo(70, 410);  

        path1.lineTo(55, 350);  

        path1.lineTo(25, 350);  

        path1.close();//把開始的點(diǎn)和最后的點(diǎn)連接在一起辞州,構(gòu)成一個(gè)封閉圖形  
        /* 
         * 最重要的就是movtTo和close,如果是Style.FILL的話,不設(shè)置close,也沒有區(qū)別寥粹,可是如果是STROKE模式变过, 
         * 如果不設(shè)置close,圖形不封閉。 
         *  
         * 當(dāng)然涝涤,你也可以不設(shè)置close媚狰,再添加一條線,效果一樣阔拳。 
         */  
        canvas.drawPath(path1, paint);  
          
          
          
          
        ///////////////////////////////////////第二列  

        paint.setColor(Color.BLUE);  

        paint.setStyle(Paint.Style.FILL);//設(shè)置實(shí)心  

        canvas.drawCircle(120, 40, 30, paint);  

        canvas.drawRect(90, 90, 150, 150, paint);  

        canvas.drawRect(90, 170, 150, 200, paint);  

        RectF re2 = new RectF(90, 220, 150, 250);  

        canvas.drawOval(re2, paint);  

        Path path2 = new Path();  

        path2.moveTo(90, 330);  

        path2.lineTo(150, 330);  

        path2.lineTo(120, 270);  

        path2.close();  

        canvas.drawPath(path2, paint);  

        Path path3 = new Path();  

        path3.moveTo(90, 410);  

        path3.lineTo(150, 410);  

        path3.lineTo(135, 350);  

        path3.lineTo(105, 350);  

        path3.close();  

        canvas.drawPath(path3, paint);  
          
          
        ////////////////////////////////////////////////////第三列  
          
        /* 
         * LinearGradient shader = new LinearGradient(0, 0, endX, endY, new 
         * int[]{startColor, midleColor, endColor},new float[]{0 , 0.5f, 
         * 1.0f}, TileMode.MIRROR); 
         * 參數(shù)一為漸變起初點(diǎn)坐標(biāo)x位置崭孤,參數(shù)二為y軸位置,參數(shù)三和四分辨對應(yīng)漸變終點(diǎn) 
         * 其中參數(shù)new int[]{startColor, midleColor,endColor}是參與漸變效果的顏色集合衫生,  
         * 其中參數(shù)new float[]{0 , 0.5f, 1.0f}是定義每個(gè)顏色處于的漸變相對位置裳瘪, 這個(gè)參數(shù)可以為null,如果為null表示所有的顏色按順序均勻的分布 
         */  
        Shader mShader = new LinearGradient(0, 0, 100, 100,  

        new int[] { Color.RED, Color.GREEN, Color.BLUE, Color.YELLOW },  

        null, Shader.TileMode.REPEAT);  

        // Shader.TileMode三種模式  

        // REPEAT:沿著漸變方向循環(huán)重復(fù)  

        // CLAMP:如果在預(yù)先定義的范圍外畫的話罪针,就重復(fù)邊界的顏色  

        // MIRROR:與REPEAT一樣都是循環(huán)重復(fù),但這個(gè)會對稱重復(fù)  

        paint.setShader(mShader);// 用Shader中定義定義的顏色來話  

        canvas.drawCircle(200, 40, 30, paint);  

        canvas.drawRect(170, 90, 230, 150, paint);  

        canvas.drawRect(170, 170, 230, 200, paint);  

        RectF re3 = new RectF(170, 220, 230, 250);  

        canvas.drawOval(re3, paint);  

        Path path4 = new Path();  

        path4.moveTo(170, 330);  

        path4.lineTo(230, 330);  

        path4.lineTo(200, 270);  

        path4.close();  

        canvas.drawPath(path4, paint);  

        Path path5 = new Path();  

        path5.moveTo(170, 410);  

        path5.lineTo(230, 410);  

        path5.lineTo(215, 350);  

        path5.lineTo(185, 350);  

        path5.close();  

        canvas.drawPath(path5, paint);  
          
        //////////////////////////////////第4列  

        paint.setTextSize(24);  

        canvas.drawText("圓形", 240, 50, paint);  

        canvas.drawText("正方形", 240, 120, paint);  

        canvas.drawText("長方形", 240, 190, paint);  

        canvas.drawText("橢圓形", 240, 250, paint);  

        canvas.drawText("三角形", 240, 320, paint);  

        canvas.drawText("梯形", 240, 390, paint);  

    }  

}  
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末黄伊,一起剝皮案震驚了整個(gè)濱河市泪酱,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌还最,老刑警劉巖墓阀,帶你破解...
    沈念sama閱讀 211,948評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拓轻,居然都是意外死亡斯撮,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,371評論 3 385
  • 文/潘曉璐 我一進(jìn)店門扶叉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來勿锅,“玉大人帕膜,你說我怎么就攤上這事∫缡” “怎么了垮刹?”我有些...
    開封第一講書人閱讀 157,490評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長张弛。 經(jīng)常有香客問我荒典,道長,這世上最難降的妖魔是什么吞鸭? 我笑而不...
    開封第一講書人閱讀 56,521評論 1 284
  • 正文 為了忘掉前任寺董,我火速辦了婚禮,結(jié)果婚禮上刻剥,老公的妹妹穿的比我還像新娘遮咖。我一直安慰自己,他們只是感情好透敌,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,627評論 6 386
  • 文/花漫 我一把揭開白布盯滚。 她就那樣靜靜地躺著,像睡著了一般酗电。 火紅的嫁衣襯著肌膚如雪魄藕。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,842評論 1 290
  • 那天撵术,我揣著相機(jī)與錄音背率,去河邊找鬼。 笑死嫩与,一個(gè)胖子當(dāng)著我的面吹牛寝姿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播划滋,決...
    沈念sama閱讀 38,997評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼饵筑,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了处坪?” 一聲冷哼從身側(cè)響起根资,我...
    開封第一講書人閱讀 37,741評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎同窘,沒想到半個(gè)月后玄帕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,203評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡想邦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,534評論 2 327
  • 正文 我和宋清朗相戀三年裤纹,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片丧没。...
    茶點(diǎn)故事閱讀 38,673評論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鹰椒,死狀恐怖锡移,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情吹零,我是刑警寧澤罩抗,帶...
    沈念sama閱讀 34,339評論 4 330
  • 正文 年R本政府宣布,位于F島的核電站灿椅,受9級特大地震影響套蒂,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜茫蛹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,955評論 3 313
  • 文/蒙蒙 一操刀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧婴洼,春花似錦骨坑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,770評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至粉捻,卻和暖如春礁遣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肩刃。 一陣腳步聲響...
    開封第一講書人閱讀 32,000評論 1 266
  • 我被黑心中介騙來泰國打工祟霍, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人盈包。 一個(gè)月前我還...
    沈念sama閱讀 46,394評論 2 360
  • 正文 我出身青樓沸呐,卻偏偏與公主長得像,于是被迫代替她去往敵國和親呢燥。 傳聞我的和親對象是個(gè)殘疾皇子崭添,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,562評論 2 349

推薦閱讀更多精彩內(nèi)容