Compose中Canvas相關(guān)總結(jié)

drawLine
fun drawLine(
        color: Color,
        start: Offset,
        end: Offset,
        strokeWidth: Float = Stroke.HairlineWidth,
        cap: StrokeCap = Stroke.DefaultCap,
        pathEffect: PathEffect? = null,
        /*FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )

/**
 * brush 是刷子,就填充線的顏色的刷子,主要是處理漸變的 主要有l(wèi)inearGradient,horizontalGradient暮芭,verticalGradient微谓,radialGradient填具,sweepGradient
 * color 是線的顏色
 * start 是線的起始點(diǎn)位置
 * end 是線的終點(diǎn)位置
 * strokeWidth 線的寬度
 * cap 線段末端的形狀。 三種取值:StrokeCap.Butt平的效果(以平邊開始和結(jié)束輪廓觅够,沒有延伸陶因。)StrokeCap.Round 圓形效果(以半圓延伸開始和結(jié)束輪廓)StrokeCap.Square 平的效果(以半正方形延伸開始和結(jié)束輪廓)
 * pathEffect 設(shè)置顯示效果(比如虛線)
 *    PathEffect.cornerPathEffect(radius: Float) 將線段之間的銳角替換為指定半徑的圓角 radius是半徑
 *    PathEffect.dashPathEffect(intervals: FloatArray, phase: Float = 0f) 將形狀繪制為具有給定間隔的一系列破折號(hào)洞斯。比如虛線  例如interval={20,5},第一個(gè)參數(shù)表示虛線的長度是20烙如,5是虛線之間的間隔是5.  phase 偏移
 *    PathEffect.chainPathEffect(outer: PathEffect, inner: PathEffect) 創(chuàng)建一個(gè)PathEffect,將內(nèi)部效果應(yīng)用于路徑毅否,然后應(yīng)用外部效果
 *    PathEffect.stampedPathEffect(shape: Path, advance: Float, phase: Float,style: StampedPathEffectStyle) 用path表示的指定形狀沖壓繪制的路徑.  shape要踩踏的路徑,advance 每個(gè)沖壓形狀之間的前進(jìn)間距, phase 在壓印第一個(gè)形狀之前要偏移的相位量, style如何在每個(gè)位置轉(zhuǎn)換形狀亚铁,因?yàn)樗菦_壓. style有三種取值 StampedPathEffectStyle.Translate 平移 ,StampedPathEffectStyle.Rotate 旋轉(zhuǎn)螟加,StampedPathEffectStyle.Morph 變形
 * alpha 透明度
 * colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果
 * blendMode 混合模式
 */
drawRect
fun drawRect(
        brush: Brush,
        color: Color,
        topLeft: Offset = Offset.Zero,
        size: Size = this.size.offsetSize(topLeft),
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        style: DrawStyle = Fill,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )

/**
 * brush 刷子
 * color 顏色
    topLeft 左上角點(diǎn)的坐標(biāo)
    size 大小徘溢,比如Size(w,h) w是寬度,h是高度
    cornerRadius 是具體的圓角
    alpha 透明度
    style DrawStyle 可以是Fill填充捆探,也可以是Stroke然爆,線條
    colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果。
    blendMode 混合模式
 */
drawImage
fun drawImage(
        image: ImageBitmap,
        topLeft: Offset = Offset.Zero,
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        style: DrawStyle = Fill,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )

/**
 * image 圖片
    topLeft 左上角
    alpha 透明度
    style 繪制類型是Fill還是Stoke
    colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果黍图。
    blendMode 混合模式后面講
    srcOffset IntOffset類型原圖像的偏移
    srcSize IntSize類型 原圖像的大小
    dstOffset IntOffset 類型目標(biāo)圖像的左上角的位置
    dstSize IntSize大小 目標(biāo)圖像的大小
 */
drawCircle
fun drawCircle(
        color: Color,
        radius: Float = size.minDimension / 2.0f,
        center: Offset = this.center,
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        style: DrawStyle = Fill,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )

/*
brush 刷子
color 顏色
radius 半徑
center 圓形
alpha 透明度
style 填充方式 Fill跟Stroke
colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果曾雕。
blendMode 混合模式
*/
drawOval
fun drawOval(
        color: Color,
        topLeft: Offset = Offset.Zero,
        size: Size = this.size.offsetSize(topLeft),
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        style: DrawStyle = Fill,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )
    
/*brush 刷子跟上面一致
color 顏色
topLeft 左上角的坐標(biāo)
size 大小
alpha 透明度
style 填充類型
colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果。
blendMode 混合模式*/
drawArc
fun drawArc(
        color: Color,
        startAngle: Float,
        sweepAngle: Float,
        useCenter: Boolean,
        topLeft: Offset = Offset.Zero,
        size: Size = this.size.offsetSize(topLeft),
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        style: DrawStyle = Fill,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )
    
/*brush 刷子
color 顏色
startAngle 開始的角度
sweepAngle 劃過的角度
useCenter 是否連接圓心
topLeft 左上角的位置
size 大小
alpha 透明度
style 填充模式
colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果助被。Image講解里有講到
blendMode 混合模式*/
drawPath
fun drawPath(
        path: Path,
        color: Color,
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        style: DrawStyle = Fill,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )
    
/*path 路徑
brush 刷子
color 顏色
alpha 透明度
style 填充類型
colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果剖张。Image講解里有講到
blendMode 混合模式*/
drawPoints
fun drawPoints(
        points: List<Offset>,
        pointMode: PointMode,
        color: Color,
        strokeWidth: Float = Stroke.HairlineWidth,
        cap: StrokeCap = StrokeCap.Butt,
        pathEffect: PathEffect? = null,
        /*@FloatRange(from = 0.0, to = 1.0)*/
        alpha: Float = 1.0f,
        colorFilter: ColorFilter? = null,
        blendMode: BlendMode = DefaultBlendMode
    )
    
/*
points 點(diǎn)的集合
pointMode 用于指示如何繪制點(diǎn)。有三種取值PointMode.Points 分別畫點(diǎn)揩环,PointMode.Lines 畫線(點(diǎn)集合兩兩組合劃線搔弄,奇數(shù)的話最后一個(gè)不管),PointMode.Polygon 畫多邊形
color 顏色
brush 刷子 設(shè)置漸變
strokeWidth 寬度
pathEffect 跟上面drawLine的一致
alpha 透明度
colorFilter 用于修改在其安裝的[Paint]上繪制的每個(gè)像素的顏色的效果丰滑。
blendMode 混合模式
*/
inset
inline fun DrawScope.inset(
    left: Float,
    top: Float,
    right: Float,
    bottom: Float,
    block: DrawScope.() -> Unit
) {
    drawContext.transform.inset(left, top, right, bottom)
    block()
    drawContext.transform.inset(-left, -top, -right, -bottom)
}

/*left左邊平移多少
top 頂部平移多少
right 右邊平移多少
bottom 底部平移多少
horizontal 橫向平移多少
vertical 豎向平移多少*/
translate
inline fun DrawScope.translate(
    left: Float = 0.0f,
    top: Float = 0.0f,
    block: DrawScope.() -> Unit
) {
    drawContext.transform.translate(left, top)
    block()
    drawContext.transform.translate(-left, -top)
}

/**
 * left 左邊平移多少
    top頂部平移多少
 */
rotate
inline fun DrawScope.rotate(
    degrees: Float,
    pivot: Offset = center,
    block: DrawScope.() -> Unit
) = withTransform({ rotate(degrees, pivot) }, block)

/**
 * degrees 順時(shí)針旋轉(zhuǎn)的角度
pivot 旋轉(zhuǎn)的中心點(diǎn) (默認(rèn)是圖形的中心)
radians 順時(shí)針旋轉(zhuǎn)的弧度
pivot 旋轉(zhuǎn)的中心點(diǎn)(默認(rèn)是圖形的中心)
 */
scale
inline fun DrawScope.scale(
    scale: Float,
    pivot: Offset = center,
    block: DrawScope.() -> Unit
) = withTransform({ scale(scale, scale, pivot) }, block)

/*scale 縮放的大小
pivot 縮放的中心點(diǎn)
scaleX X軸縮放多少
scaleY Y軸縮放所少
pivot 縮放的中心點(diǎn)*/
clipRect
inline fun DrawScope.clipRect(
    left: Float = 0.0f,
    top: Float = 0.0f,
    right: Float = size.width,
    bottom: Float = size.height,
    clipOp: ClipOp = ClipOp.Intersect,
    block: DrawScope.() -> Unit
) = withTransform({ clipRect(left, top, right, bottom, clipOp) }, block)

/*left 左邊的坐標(biāo)
top 頂部的坐標(biāo)
right 右邊的坐標(biāo)
bottom 底部的坐標(biāo)
clipOp 裁剪的類型ClipOp ClipOp.Intersect是裁剪出來的矩形顾犹。ClipOp.Difference從當(dāng)前剪輯中減去提供的矩形*/
clipPath
inline fun DrawScope.clipPath(
    path: Path,
    clipOp: ClipOp = ClipOp.Intersect,
    block: DrawScope.() -> Unit
) = withTransform({ clipPath(path, clipOp) }, block)

/*path 是路徑
clipOp 裁剪的類型ClipOp ClipOp.Intersect是裁剪出來的矩形。ClipOp.Difference從當(dāng)前剪輯中減去*/
withTransform 組合
inline fun DrawScope.withTransform(
    transformBlock: DrawTransform.() -> Unit,
    drawBlock: DrawScope.() -> Unit
) = with(drawContext) {
    // Transformation can include inset calls which change the drawing area
    // so cache the previous size before the transformation is done
    // and reset it afterwards
    val previousSize = size
    canvas.save()
    transformBlock(transform)
    drawBlock()
    canvas.restore()
    size = previousSize
}

Canvas(modifier = Modifier.fillMaxSize()){
        val canvasSize = size
        val canvasWidth = size.width
        val canvasHeight = size.height

        withTransform({
            translate(left = canvasWidth/5F)
            rotate(degrees=45F)
        }) {
            drawRect(
                color = Color.Gray,
                topLeft = Offset(x = canvasWidth / 3F, y = canvasHeight / 3F),
                size = canvasSize / 3F
            )
        }
    }
BlendMode 混合模式

混合是有個(gè)原圖像src,一個(gè)dst目標(biāo)圖像褒墨,這兩個(gè)圖的相交區(qū)域的各種組合情況炫刷。

Clear 清除 (刪除源圖像和目標(biāo)圖像,不留下任何內(nèi)容)
Src 刪除目標(biāo)圖像貌亭,只繪制源圖像
Dst 刪除源圖像柬唯,只繪制目標(biāo)圖像
SrcOver 源圖和目標(biāo)圖合成,源圖在上
DstOver 目標(biāo)圖和源圖合成圃庭,目標(biāo)圖在上
SrcIn 顯示源圖和目標(biāo)圖相交的部分锄奢,并且只顯示源圖像
DstIn 顯示目標(biāo)圖和源圖相交的部分,并且只顯示目標(biāo)圖
SrcOut 顯示源圖像和目標(biāo)圖不相交的部分剧腻,并且只顯示源圖
DstOut 顯示目標(biāo)圖和源圖像不相交的部分拘央,并且只顯示目標(biāo)圖
SrcAtop 顯示目標(biāo)圖,并且在相交的地方顯示源圖
DstAtop 顯示源圖书在,并在相交的地方顯示目標(biāo)圖
Xor 顯示源圖和目標(biāo)圖灰伟,但相交的位置不顯示(代碼注釋:對(duì)源圖像和目標(biāo)圖像應(yīng)用按位異或運(yùn)算符。這就使得它們重疊的地方保持透明。)
Plus 對(duì)源映像和目標(biāo)映像的組件求和栏账。其中一個(gè)圖像的像素中的透明度降低了該圖像對(duì)相應(yīng)輸出像素的貢獻(xiàn)帖族,就好像該圖像中該像素的顏色較暗一樣
Modulate 將源圖像和目標(biāo)圖像的顏色分量相乘。這只能產(chǎn)生相同或較深的顏色(乘以白色挡爵,1.0竖般,結(jié)果不變;乘以黑色(0.0茶鹃,結(jié)果為黑色)涣雕。合成兩個(gè)不透明圖像時(shí),這與在投影儀上重疊兩個(gè)透明膠片的效果類似闭翩。對(duì)于同樣乘以alpha通道的變量挣郭,請(qǐng)考慮乘以。
Screen 將源圖像和目標(biāo)圖像的分量的逆相乘疗韵,然后求逆結(jié)果兑障。反轉(zhuǎn)組件意味著完全飽和的通道(不透明白色)被視為值0.0,而通常被視為0.0(黑色伶棒,透明)的值被視為1.0旺垒。這基本上與調(diào)制混合模式相同,但是在乘法之前顏色值反轉(zhuǎn)肤无,結(jié)果在渲染之前反轉(zhuǎn)回來先蒋。這只能產(chǎn)生相同或較淺的顏色(乘以黑色,1.0宛渐,結(jié)果不變竞漾;乘以白色(0.0,結(jié)果為白色)窥翩。類似地业岁,在alpha通道中,它只能產(chǎn)生更不透明的顏色寇蚊。這與兩臺(tái)投影儀同時(shí)在同一屏幕上顯示圖像的效果相似笔时。
Overlay 將源圖像和目標(biāo)圖像的分量相乘,然后調(diào)整它們以支持目標(biāo)仗岸。具體來說允耿,如果目標(biāo)值較小,則將其與源值相乘扒怖,而如果源值較小较锡,則將源值的倒數(shù)與目標(biāo)值的倒數(shù)相乘,然后反轉(zhuǎn)結(jié)果盗痒。反轉(zhuǎn)組件意味著完全飽和的通道(不透明白色)被視為值0.0蚂蕴,而通常被視為0.0(黑色,透明)的值被視為1.0。
Darken 通過從每個(gè)顏色通道中選擇最低值來合成源圖像和目標(biāo)圖像骡楼。輸出圖像的不透明度的計(jì)算方法與SrcOver相同熔号。
Lighten 通過從每個(gè)顏色通道中選擇最高值來合成源圖像和目標(biāo)圖像。輸出圖像的不透明度的計(jì)算方法與SrcOver相同鸟整。
ColorDodge 將目標(biāo)除以源的倒數(shù)跨嘉。反轉(zhuǎn)組件意味著完全飽和的通道(不透明白色)被視為值0.0,而通常被視為0.0(黑色吃嘿,透明)的值被視為1.0。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
ColorBurn :將目標(biāo)的倒數(shù)除以源的倒數(shù)梦重,然后求結(jié)果的倒數(shù)兑燥。反轉(zhuǎn)組件意味著完全飽和的通道(不透明白色)被視為值0.0,而通常被視為0.0(黑色琴拧,透明)的值被視為1.0降瞳。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
Hardlight : 將源圖像和目標(biāo)圖像的分量相乘,然后調(diào)整它們以有利于源圖像蚓胸。具體來說挣饥,如果源值較小,則將其與目標(biāo)值相乘沛膳,而如果目標(biāo)值較小扔枫,則將目標(biāo)值的倒數(shù)與源值的倒數(shù)相乘,然后反轉(zhuǎn)結(jié)果锹安。反轉(zhuǎn)組件意味著完全飽和的通道(不透明白色)被視為值0.0短荐,而通常被視為0.0(黑色,透明)的值被視為1.0叹哭。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
Softlight: 對(duì)于低于0.5的源值忍宋,使用ColorDodge;對(duì)于高于0.5的源值风罩,使用ColorBurn糠排。這會(huì)產(chǎn)生類似的效果,但比疊加效果更柔和超升。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
Difference: 從每個(gè)通道的較大值中減去較小的值入宦。合成黑沒有效果;合成白色將反轉(zhuǎn)其他圖像的顏色廓俭。輸出圖像的不透明度的計(jì)算方法與SrcOver相同云石。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用這種影響類似于排斥,但更為嚴(yán)厲研乒。
Exclusion: 從兩個(gè)圖像的總和中減去兩個(gè)圖像乘積的兩倍汹忠。合成黑沒有效果;合成白色將反轉(zhuǎn)其他圖像的顏色。輸出圖像的不透明度的計(jì)算方法與SrcOver相同宽菜。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用效果類似于差異谣膳,但更柔和。
Multiply: 將源圖像和目標(biāo)圖像的分量相乘铅乡,包括alpha通道继谚。這只能產(chǎn)生相同或較深的顏色(乘以白色,1.0阵幸,結(jié)果不變花履;乘以黑色(0.0,結(jié)果為黑色)挚赊。由于alpha通道也會(huì)相乘诡壁,因此一個(gè)圖像中的完全透明像素(不透明度0.0)會(huì)導(dǎo)致輸出中的完全透明像素。這與DstIn類似荠割,但顏色組合在一起妹卿。
Hue: 獲取源圖像的色調(diào),以及目標(biāo)圖像的飽和度和亮度蔑鹦。其效果是用源圖像著色目標(biāo)圖像夺克。輸出圖像的不透明度的計(jì)算方法與SrcOver相同。在源圖像中完全透明的區(qū)域從目標(biāo)圖像獲取其色調(diào)嚎朽。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
Saturation: 獲取源圖像的飽和度铺纽,以及目標(biāo)圖像的色調(diào)和亮度。輸出圖像的不透明度的計(jì)算方法與SrcOver相同火鼻。在源圖像中完全透明的區(qū)域從目標(biāo)圖像獲取其飽和度室囊。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
Color :獲取源圖像的色調(diào)和飽和度,以及目標(biāo)圖像的亮度魁索。其效果是用源圖像著色目標(biāo)圖像融撞。輸出圖像的不透明度的計(jì)算方法與SrcOver相同。源圖像中完全透明的區(qū)域從目標(biāo)處獲取其色調(diào)和飽和度粗蔚。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用
Luminosity :獲取源圖像的亮度尝偎,以及目標(biāo)圖像的色調(diào)和飽和度。輸出圖像的不透明度的計(jì)算方法與SrcOver相同鹏控。在源圖像中完全透明的區(qū)域從目標(biāo)圖像獲取其亮度致扯。注意這個(gè)BlendMode只能在androidapi級(jí)別29及以上使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市当辐,隨后出現(xiàn)的幾起案子抖僵,更是在濱河造成了極大的恐慌,老刑警劉巖缘揪,帶你破解...
    沈念sama閱讀 216,402評(píng)論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耍群,死亡現(xiàn)場(chǎng)離奇詭異义桂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)蹈垢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門慷吊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人曹抬,你說我怎么就攤上這事溉瓶。” “怎么了谤民?”我有些...
    開封第一講書人閱讀 162,483評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵堰酿,是天一觀的道長。 經(jīng)常有香客問我张足,道長胞锰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,165評(píng)論 1 292
  • 正文 為了忘掉前任兢榨,我火速辦了婚禮,結(jié)果婚禮上顺饮,老公的妹妹穿的比我還像新娘吵聪。我一直安慰自己,他們只是感情好兼雄,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評(píng)論 6 388
  • 文/花漫 我一把揭開白布吟逝。 她就那樣靜靜地躺著,像睡著了一般赦肋。 火紅的嫁衣襯著肌膚如雪块攒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評(píng)論 1 297
  • 那天佃乘,我揣著相機(jī)與錄音囱井,去河邊找鬼次屠。 笑死囚霸,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的疗疟。 我是一名探鬼主播程帕,決...
    沈念sama閱讀 40,032評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼住练,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了愁拭?” 一聲冷哼從身側(cè)響起讲逛,我...
    開封第一講書人閱讀 38,896評(píng)論 0 274
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎岭埠,沒想到半個(gè)月后盏混,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔚鸥,經(jīng)...
    沈念sama閱讀 45,311評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評(píng)論 2 332
  • 正文 我和宋清朗相戀三年括饶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了株茶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡图焰,死狀恐怖启盛,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情技羔,我是刑警寧澤僵闯,帶...
    沈念sama閱讀 35,413評(píng)論 5 343
  • 正文 年R本政府宣布,位于F島的核電站藤滥,受9級(jí)特大地震影響鳖粟,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拙绊,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評(píng)論 3 325
  • 文/蒙蒙 一向图、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧标沪,春花似錦榄攀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至违寞,卻和暖如春贞瞒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背趁曼。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評(píng)論 1 269
  • 我被黑心中介騙來泰國打工军浆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人挡闰。 一個(gè)月前我還...
    沈念sama閱讀 47,698評(píng)論 2 368
  • 正文 我出身青樓瘾敢,卻偏偏與公主長得像,于是被迫代替她去往敵國和親尿这。 傳聞我的和親對(duì)象是個(gè)殘疾皇子簇抵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評(píng)論 2 353

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