android 如何在构图中绘制向量?

7uzetpgm  于 2024-01-04  发布在  Android
关注(0)|答案(2)|浏览(128)

我有以下代码:

  1. @Preview
  2. @Composable
  3. fun PreviewScreen(){
  4. val vector = ImageVector.Builder(
  5. defaultWidth = 100.dp,
  6. defaultHeight = 100.dp,
  7. viewportWidth = 10f,
  8. viewportHeight = 10f,
  9. tintBlendMode = BlendMode.SrcOver
  10. ).path(fill = Brush.horizontalGradient(listOf(Color.Green, Color.Blue))) {
  11. moveTo(1f,1f)
  12. lineTo(8f, 8f)
  13. }.build()
  14. val painter = rememberVectorPainter(image = vector)
  15. Canvas(modifier = Modifier.fillMaxSize()){
  16. with(painter){
  17. draw(painter.intrinsicSize)
  18. }
  19. }
  20. }

字符串
我希望看到一条渐变线。但由于某种原因,什么也没画出来:


的数据
为什么我做错了什么

2mbi3lxu

2mbi3lxu1#

尝试添加更多线条。您使用fill参数,它使用渐变填充图形。渐变不起作用,因为终点设置为无穷大。设置endX,看到蓝色

  1. val vector = ImageVector.Builder(
  2. defaultWidth = 100.dp,
  3. defaultHeight = 100.dp,
  4. viewportWidth = 10f,
  5. viewportHeight = 10f,
  6. tintBlendMode = BlendMode.SrcOver
  7. ).path(fill = Brush.horizontalGradient(listOf(Color.Green, Color.Blue), endX = 8f)) {
  8. moveTo(0f, 0f)
  9. lineTo(0f, 8f)
  10. lineTo(8f, 8f)
  11. lineTo(8f, 0f)
  12. lineTo(0f, 0f)
  13. }.build()
  14. val painter = rememberVectorPainter(image = vector)
  15. Canvas(modifier = Modifier.fillMaxSize()) {
  16. with(painter) {
  17. draw(painter.intrinsicSize)
  18. }
  19. }

字符串
如果你想画线,你应该像这样使用路径和SolidColor

  1. path(stroke = SolidColor(Color.Black)) {
  2. moveTo(0f, 0f)
  3. lineTo(0f, 6f)
  4. lineTo(6f, 6f)
  5. lineTo(6f, 0f)
  6. lineTo(0f, 0f)
  7. }

展开查看全部
oxf4rvwz

oxf4rvwz2#

尝试以下

  1. import androidx.compose.foundation.Canvas
  2. import androidx.compose.foundation.layout.fillMaxSize
  3. import androidx.compose.material3.MaterialTheme
  4. import androidx.compose.runtime.Composable
  5. import androidx.compose.ui.Modifier
  6. import androidx.compose.ui.geometry.Offset
  7. import androidx.compose.ui.graphics.Brush
  8. import androidx.compose.ui.graphics.Color
  9. import androidx.compose.ui.tooling.preview.Preview
  10. import androidx.compose.ui.unit.dp
  11. @Preview
  12. @Composable
  13. fun PreviewScreen() {
  14. Canvas(modifier = Modifier.fillMaxSize()) {
  15. val gradient = Brush.horizontalGradient(colors = listOf(Color.Green, Color.Blue))
  16. drawLine(
  17. brush = gradient,
  18. start = Offset(x = 0f, y = 0f),
  19. end = Offset(x = size.width, y = size.height),
  20. strokeWidth = 5.dp.toPx()
  21. )
  22. }
  23. }

字符串


的数据

展开查看全部

相关问题