how to draw transparent rect in pygame
up vote
1
down vote
favorite
Can I draw a rect which is transparent inside, but not the outline? It would be better if I could set the outline's width.
pygame width transparent rect outline
add a comment |
up vote
1
down vote
favorite
Can I draw a rect which is transparent inside, but not the outline? It would be better if I could set the outline's width.
pygame width transparent rect outline
Do you want to know how to draw only the outline or how to make the outline transparent? To draw an outline you can just pass an int which determines the width as the fourth argument topygame.draw.rect
. The problem is that it looks rather ugly for large widths because there will be gaps at the corners. You could also create your own rect outline function and draw four lines.
– skrx
Nov 11 at 9:38
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
Can I draw a rect which is transparent inside, but not the outline? It would be better if I could set the outline's width.
pygame width transparent rect outline
Can I draw a rect which is transparent inside, but not the outline? It would be better if I could set the outline's width.
pygame width transparent rect outline
pygame width transparent rect outline
asked Nov 11 at 7:21
jwoojin9
274
274
Do you want to know how to draw only the outline or how to make the outline transparent? To draw an outline you can just pass an int which determines the width as the fourth argument topygame.draw.rect
. The problem is that it looks rather ugly for large widths because there will be gaps at the corners. You could also create your own rect outline function and draw four lines.
– skrx
Nov 11 at 9:38
add a comment |
Do you want to know how to draw only the outline or how to make the outline transparent? To draw an outline you can just pass an int which determines the width as the fourth argument topygame.draw.rect
. The problem is that it looks rather ugly for large widths because there will be gaps at the corners. You could also create your own rect outline function and draw four lines.
– skrx
Nov 11 at 9:38
Do you want to know how to draw only the outline or how to make the outline transparent? To draw an outline you can just pass an int which determines the width as the fourth argument to
pygame.draw.rect
. The problem is that it looks rather ugly for large widths because there will be gaps at the corners. You could also create your own rect outline function and draw four lines.– skrx
Nov 11 at 9:38
Do you want to know how to draw only the outline or how to make the outline transparent? To draw an outline you can just pass an int which determines the width as the fourth argument to
pygame.draw.rect
. The problem is that it looks rather ugly for large widths because there will be gaps at the corners. You could also create your own rect outline function and draw four lines.– skrx
Nov 11 at 9:38
add a comment |
1 Answer
1
active
oldest
votes
up vote
1
down vote
accepted
If you just want to draw the outline of a rect, you can pass an integer as the fourth (the width
) argument to pygame.draw.rect
:
pygame.draw.rect(screen, (0, 100, 255), (50, 50, 162, 100), 3) # width = 3
The problem with this approach is that the corners won't look sharp and clean and the outline can't be transparent.
You could also use the gfxdraw
module to draw several outlines with a for
loop:
def draw_rect_outline(surface, rect, color, width=1):
x, y, w, h = rect
width = max(width, 1) # Draw at least one rect.
width = min(min(width, w//2), h//2) # Don't overdraw.
# This draws several smaller outlines inside the first outline. Invert
# the direction if it should grow outwards.
for i in range(width):
pygame.gfxdraw.rectangle(screen, (x+i, y+i, w-i*2, h-i*2), color)
draw_rect_outline(screen, (250, 50, 162, 100), (0, 100, 255, 155), 9)
That also allows you to pass a color with an alpha channel to make the outline transparent.
It would also be possible to create a transparent surface and draw a rect onto it (you can pass a transparent color here as well):
surf = pygame.Surface((162, 100), pygame.SRCALPHA)
pygame.draw.rect(surf, (0, 100, 255, 155), (0, 0, 162, 100), 21)
If you want a filled, transparent rectangle, just fill
the complete surface:
surf.fill((0, 100, 255, 155))
add a comment |
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
1
down vote
accepted
If you just want to draw the outline of a rect, you can pass an integer as the fourth (the width
) argument to pygame.draw.rect
:
pygame.draw.rect(screen, (0, 100, 255), (50, 50, 162, 100), 3) # width = 3
The problem with this approach is that the corners won't look sharp and clean and the outline can't be transparent.
You could also use the gfxdraw
module to draw several outlines with a for
loop:
def draw_rect_outline(surface, rect, color, width=1):
x, y, w, h = rect
width = max(width, 1) # Draw at least one rect.
width = min(min(width, w//2), h//2) # Don't overdraw.
# This draws several smaller outlines inside the first outline. Invert
# the direction if it should grow outwards.
for i in range(width):
pygame.gfxdraw.rectangle(screen, (x+i, y+i, w-i*2, h-i*2), color)
draw_rect_outline(screen, (250, 50, 162, 100), (0, 100, 255, 155), 9)
That also allows you to pass a color with an alpha channel to make the outline transparent.
It would also be possible to create a transparent surface and draw a rect onto it (you can pass a transparent color here as well):
surf = pygame.Surface((162, 100), pygame.SRCALPHA)
pygame.draw.rect(surf, (0, 100, 255, 155), (0, 0, 162, 100), 21)
If you want a filled, transparent rectangle, just fill
the complete surface:
surf.fill((0, 100, 255, 155))
add a comment |
up vote
1
down vote
accepted
If you just want to draw the outline of a rect, you can pass an integer as the fourth (the width
) argument to pygame.draw.rect
:
pygame.draw.rect(screen, (0, 100, 255), (50, 50, 162, 100), 3) # width = 3
The problem with this approach is that the corners won't look sharp and clean and the outline can't be transparent.
You could also use the gfxdraw
module to draw several outlines with a for
loop:
def draw_rect_outline(surface, rect, color, width=1):
x, y, w, h = rect
width = max(width, 1) # Draw at least one rect.
width = min(min(width, w//2), h//2) # Don't overdraw.
# This draws several smaller outlines inside the first outline. Invert
# the direction if it should grow outwards.
for i in range(width):
pygame.gfxdraw.rectangle(screen, (x+i, y+i, w-i*2, h-i*2), color)
draw_rect_outline(screen, (250, 50, 162, 100), (0, 100, 255, 155), 9)
That also allows you to pass a color with an alpha channel to make the outline transparent.
It would also be possible to create a transparent surface and draw a rect onto it (you can pass a transparent color here as well):
surf = pygame.Surface((162, 100), pygame.SRCALPHA)
pygame.draw.rect(surf, (0, 100, 255, 155), (0, 0, 162, 100), 21)
If you want a filled, transparent rectangle, just fill
the complete surface:
surf.fill((0, 100, 255, 155))
add a comment |
up vote
1
down vote
accepted
up vote
1
down vote
accepted
If you just want to draw the outline of a rect, you can pass an integer as the fourth (the width
) argument to pygame.draw.rect
:
pygame.draw.rect(screen, (0, 100, 255), (50, 50, 162, 100), 3) # width = 3
The problem with this approach is that the corners won't look sharp and clean and the outline can't be transparent.
You could also use the gfxdraw
module to draw several outlines with a for
loop:
def draw_rect_outline(surface, rect, color, width=1):
x, y, w, h = rect
width = max(width, 1) # Draw at least one rect.
width = min(min(width, w//2), h//2) # Don't overdraw.
# This draws several smaller outlines inside the first outline. Invert
# the direction if it should grow outwards.
for i in range(width):
pygame.gfxdraw.rectangle(screen, (x+i, y+i, w-i*2, h-i*2), color)
draw_rect_outline(screen, (250, 50, 162, 100), (0, 100, 255, 155), 9)
That also allows you to pass a color with an alpha channel to make the outline transparent.
It would also be possible to create a transparent surface and draw a rect onto it (you can pass a transparent color here as well):
surf = pygame.Surface((162, 100), pygame.SRCALPHA)
pygame.draw.rect(surf, (0, 100, 255, 155), (0, 0, 162, 100), 21)
If you want a filled, transparent rectangle, just fill
the complete surface:
surf.fill((0, 100, 255, 155))
If you just want to draw the outline of a rect, you can pass an integer as the fourth (the width
) argument to pygame.draw.rect
:
pygame.draw.rect(screen, (0, 100, 255), (50, 50, 162, 100), 3) # width = 3
The problem with this approach is that the corners won't look sharp and clean and the outline can't be transparent.
You could also use the gfxdraw
module to draw several outlines with a for
loop:
def draw_rect_outline(surface, rect, color, width=1):
x, y, w, h = rect
width = max(width, 1) # Draw at least one rect.
width = min(min(width, w//2), h//2) # Don't overdraw.
# This draws several smaller outlines inside the first outline. Invert
# the direction if it should grow outwards.
for i in range(width):
pygame.gfxdraw.rectangle(screen, (x+i, y+i, w-i*2, h-i*2), color)
draw_rect_outline(screen, (250, 50, 162, 100), (0, 100, 255, 155), 9)
That also allows you to pass a color with an alpha channel to make the outline transparent.
It would also be possible to create a transparent surface and draw a rect onto it (you can pass a transparent color here as well):
surf = pygame.Surface((162, 100), pygame.SRCALPHA)
pygame.draw.rect(surf, (0, 100, 255, 155), (0, 0, 162, 100), 21)
If you want a filled, transparent rectangle, just fill
the complete surface:
surf.fill((0, 100, 255, 155))
answered Nov 11 at 11:43
skrx
14.9k31834
14.9k31834
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53246660%2fhow-to-draw-transparent-rect-in-pygame%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Do you want to know how to draw only the outline or how to make the outline transparent? To draw an outline you can just pass an int which determines the width as the fourth argument to
pygame.draw.rect
. The problem is that it looks rather ugly for large widths because there will be gaps at the corners. You could also create your own rect outline function and draw four lines.– skrx
Nov 11 at 9:38