正确地从粉红色背网格图像中剪切图像进行绘制

发布于 2024-12-04 09:22:30 字数 367 浏览 3 评论 0原文

在此处输入图像描述

看一下上面的图像。我正在创建一个基于图块的游戏(重新创建)。在我的其他精灵中,我只是将地形方块放入网格中,它们是实心的,所以没有问题。这里的问题是,如果我现在使用这个角色,它会尝试显示他身后的粉红色(他是 16x16)。

我使用 System.Graphics 来显示项目(并在使用graphics.DrawImage() 时将其剪切掉)。有什么方法可以让它忽略特定颜色并使它们透明吗?

我正在使用 VB.net,因此所有 .net 答案都是可以接受的。

对于评论中的一点(或答案中的额外一点),使用粉红色网格包含所有精灵的方法是什么?

enter image description here

Take a look at the image above. I'm creating a (recreation) of a tile-based game. In my other sprites, I've simply been placing the terrain squares into the grid, they are solid so there was no problems. The problem here is that, if I use this character now, it tries to show the pink behind him (He is 16x16).

I'm using System.Graphics to display the items (and cutting them out when using graphics.DrawImage()). Is there any way I can have it ignore specific colors and make them transparent?

I'm using VB.net so all .net answers are acceptable.

For a point in the comments (or and extra point in your answer), what is the method called where you use a pink grid to contain all your sprites?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

三生一梦 2024-12-11 09:22:30

您可能应该将图像转换为 PNG 并使背景透明。如果没有,您可以直接转换位图:

Public Class Form1
  Private bmp As Bitmap

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    bmp = New Bitmap(bitmapFileName)
    bmp.MakeTransparent(Color.FromArgb(255, 0, 220))
  End Sub

  Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    e.Graphics.DrawImage(bmp, New Point(32, 32))
  End Sub
End Class

You should probably convert your image to a PNG and make the background transparent. If not, you can just convert the bitmap:

Public Class Form1
  Private bmp As Bitmap

  Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
    bmp = New Bitmap(bitmapFileName)
    bmp.MakeTransparent(Color.FromArgb(255, 0, 220))
  End Sub

  Private Sub Form1_Paint(ByVal sender As Object, ByVal e As PaintEventArgs) Handles MyBase.Paint
    e.Graphics.DrawImage(bmp, New Point(32, 32))
  End Sub
End Class
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文