Skip to content

Instantly share code, notes, and snippets.

@Alia5
Last active December 3, 2024 14:13
Show Gist options
  • Save Alia5/5d8c48941d1f73c1ef14967a5ffe33d5 to your computer and use it in GitHub Desktop.
Save Alia5/5d8c48941d1f73c1ef14967a5ffe33d5 to your computer and use it in GitHub Desktop.
Transparent SFML Window
#include <SFML/Graphics.hpp>
#include <Windows.h>
#include <Dwmapi.h>
#pragma comment (lib, "Dwmapi.lib")
int main()
{
sf::RenderWindow window(sf::VideoMode(1280, 720), "Transparent Window");
window.setFramerateLimit(60);
MARGINS margins;
margins.cxLeftWidth = -1;
SetWindowLong(window.getSystemHandle(), GWL_STYLE, WS_POPUP | WS_VISIBLE);
DwmExtendFrameIntoClientArea(window.getSystemHandle(), &margins);
//CircleShape for DemoContent
sf::CircleShape shape(360.f);
shape.setFillColor(sf::Color::Green);
//\
sf::Vector2i grabbedOffset;
bool grabbedWindow = false;
while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed || event.type == sf::Event::KeyPressed && event.key.code == sf::Keyboard::Escape)
window.close();
else if (event.type == sf::Event::MouseButtonPressed)
{
if (event.mouseButton.button == sf::Mouse::Left)
{
grabbedOffset = window.getPosition() - sf::Mouse::getPosition();
grabbedWindow = true;
}
}
else if (event.type == sf::Event::MouseButtonReleased)
{
if (event.mouseButton.button == sf::Mouse::Left)
grabbedWindow = false;
}
else if (event.type == sf::Event::MouseMoved)
{
if (grabbedWindow)
window.setPosition(sf::Mouse::getPosition() + grabbedOffset);
}
}
window.clear(sf::Color::Transparent); //F*ck yeah it works as you would expect from the wording ;P
window.draw(shape);
window.display();
}
return 0;
}
@radugrecu97
Copy link

radugrecu97 commented Dec 3, 2024

I don't understand why I can't get the partial transparency effect to function!

I wanted to debug the issue of why using GloSI gives me black screen instead of transparent layer but not even the simplest code works.

Tried this and many other examples with latest SFML on a new Vstudio solution. On Windows 11.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment