Not entirely sure how to do this, but is there a way to display text without any background? I was trying various functions with the lua-gd, but so far I have not had any luck. Ideally I would like to do it through lua-gd since I want the ability to specify a sexy font. Has anyone done this? Thanks.
------------
UPDATE
Believe I figured out how transparency and drawing with gd works a little better. But I still have not figured out how to draw only one object, and have everything else transparent. Next thing I am going to try is a png with transparency already in it just to see if I can even do it, but I do not want to save everything as an image to use that. Any ideas? Here are some funny gi joe pics.
-- fceux gui.opacity sets the transparency on whole image, but colorallocatealpha sets objects in image transaparency
require "gd"
while (true) do
im = assert(gd.createTrueColor(80, 80))
black = im:colorAllocateAlpha(0, 0, 0,126)
white = im:colorAllocateAlpha(255, 255, 255,60)
im:openPolygon( { { 50, 50 }, { 50, 60 }, { 60, 60 }, { 60, 50 } }, white)
gui.gdoverlay(0,
0,
im:gdStr());
gui.opacity(0.5);
FCEU.frameadvance();
end;
----------------
--see how the colorAllocateAlpha sets the transparency of images in image relative to each other?
--order of drawing is important as well.
require "gd"
while (true) do
im = assert(gd.createTrueColor(200, 100))
green = im:colorAllocateAlpha(0, 200, 0,0)
red = im:colorAllocateAlpha(200,0, 0,50)
white = im:colorAllocateAlpha(255, 255, 255,40)
blue= im:colorAllocateAlpha(0, 0, 200,10)
gd.useFontConfig(true)
im:stringFT(blue, "Arial", 20, 0, 10, 30, "Standard Arial")
im:filledRectangle(0, 0, 100, 50, green )
im:filledRectangle(25, 25, 125, 75, red )
im:filledRectangle(35, 35, 150, 150, white )
gui.gdoverlay(0,
0,
im:gdStr());
--~ gui.opacity(0.5);
FCEU.frameadvance();
end;
-------------
UPDATE - Got Solution - 5/31
This is what happens when you do not read the documentation carefully enough, and just assume things.
gd.createTrueColor(x, y)
Used to create truecolor images, with an essentially unlimited number of colors. Invoke gd.createTrueColor
with the x and y dimensions of the desired image to return the new image or nil on error. Truecolor images
are always filled with black at creation time. There is no concept of a "background" color index.
require "gd"
while (true) do
im = gd.create(200, 50);--works with transparency
white = im:colorAllocateAlpha(255, 255, 255,127);--background
black = im:colorAllocate(0, 0, 0, 20);
im:string(gd.FONT_GIANT, 1, 1, "transparent background", black);
gui.gdoverlay(0,
50,
im:gdStr());
im = assert(gd.createTrueColor(50, 50)) --does not seem to allow transparency...
white = im:colorAllocateAlpha(255, 255, 255,127);--background
black = im:colorAllocate(0, 0, 0, 20);
im:string(gd.FONT_LARGE, 1, 1, "no transparency", black);
gui.gdoverlay(0,
0,
im:gdStr());
FCEU.frameadvance()
end
Not entirely sure how to do this, but is there a way to display text without any background?
You mean with the game showing underneath?
As for doing that with lua-gd, does specifying the background color using image:colorAllocateAlpha() to be fully transparent work?
Not entirely sure how to do this, but is there a way to display text without any background?
You mean with the game showing underneath?
As for doing that with lua-gd, does specifying the background color using image:colorAllocateAlpha() to be fully transparent work?
Looks you you were right, I was just calling the wrong image creation method...