Ein Bild als Dialogbox benutzen
lima-city → Forum → Programmiersprachen → C/C++ und D
alpha
beitrag
beweglichkeit
bild
borland
compiler
dan
dialog
durchsichtigkeit
formen
funktion
gesetzt bitte
maske
mom
pixel
programmablauf
sage
sehne
transparentes bild
veranschaulichung
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hi,
wie du das mit der beweglichkeit machst, wenn du irgendwo hinklickt wei? ich jetzt nicht. das findest du aber unter smartmove oder ?hnliches.. hab ich mal gefunden.
wenn du den borland C++ compiler 6 benutzt findest du bei den eigenschaften von deiner form zwei wichtige eintr?ge.
AlphaBlendValue
und noch einer irgendwas Alpha* gleich daneben.
den einen auf true setzten und dann kannst du werte zwischen 255 und 0 f?r die durchsichtigkeit einstellen. werte lassen sich auch w?hren dem programmablauf ?ndern. so hab ich programme geschrieben die sch?n auftauchen und wieder verschwinden.
hoffe ich hab dir ein bisschen geholfen
mfg moms -
wei? einer, wie das bei MS Visual C++ 6.0 aussieht- also, das mit dem durchsichtig machen?
Ich br?uchte auch den Code, um die Werte zu ver?ndern.
Es soll aber nur die Dialog-box nicht zu sehen sein, die sachen darauf schon...
danke im vorraus...
ands -
Also versteh ich das jetzt so das die DialogBox net zu sehne sein soll Sprich durch nen Bild ers?tzt wird aber Buttons etc. sollen zu sehn sein wenn es darum geht is das ne gute Funktion:
StretchBlt
SetStretchBltMode
au?erdem muss dann noch die Systemleise ausgeblendet werden da man diese nicht ?bermalen kann. -
soweit ich dich verstanden habe, willst du einfach ein bild als hintergrund setzen.
Das ist aber nicht das, was ich will.
ich habe n?mlich ein bild mit abgerundeten ecken, die dann aber nicht durchsichtig w?ren - und das ist ja das problem!
diese sollen ja eben nicht da sein!
wie mach ich das? -
Aso also soll die Form Transparent gemacht werden und nicht das bild das ist leicht geht mit der Funktion:
SetWindowRgn
hier gibt es 2 M?glichkeiten entweder du setzt einen bereich mit CreateEllipticRgn dan hatt das Formular runde Ecken oder du erstellst einen Bereich anhand einer Maske so kann dein Fenster eine beliebige Form haben.
*EDIT* Mit der Funktion kann man aus dieser Maske http://www.plust.de.vu/maskmaus.jpeg das hier http://www.plust.de.vu/appmaus.jpeg es is jetzt net doll aber man kann das noch anpassen wie es einem passt. Noch nen Screenshot zur Veranschaulichung http://www.plust.de.vu/maske.jpg
Unter BCB kann man eine Solche Maske so machen
//---------------------------------------
void __stdcall fdChangeWindowRgn(HWND hWnd, LPSTR sFileName)
{
Graphics::TBitmap *b = new Graphics::TBitmap();
b->LoadFromFile(sFileName);
SetWindowRgn(hWnd, GetRgnFromMask(b),false);
b->Free();
}
//--------------------------------
HRGN GetRgnFromMask(Graphics::TBitmap *m_Bmp)
{
Graphics::TBitmap *m_Bitmap = new Graphics::TBitmap();
m_Bitmap->Width = m_Bmp->Width;
m_Bitmap->Height = m_Bmp->Height;
m_Bitmap->Canvas->Draw(0,0,m_Bmp);
TColor col, mask;
HRGN hRgn, r;
hRgn = CreateRectRgn(0,0,m_Bitmap->Width,m_Bitmap->Height);
mask = m_Bitmap->Canvas->Pixels[0][0];
for(int x=0; x<=m_Bitmap->Width; x++)
{
for(int y=0; y<=m_Bitmap->Height; y++)
{
col = m_Bitmap->Canvas->Pixels[x][y];
if(col == mask)
{
r = CreateRectRgn(x, y, x+1, y+1);
CombineRgn(hRgn, hRgn, r, RGN_XOR);
DeleteObject(r);
}
}
}
return hRgn;
}
/////////////////////////////////////
F?r VC++ hab ich das gefunden
http://www.ddvip.net/program/vc/index2/127.htm
Funktionier im Grunde wie mein Code
Beitrag ge?ndert am 11.07.2005 15:25 von funkdoobiest -
welche header-dateien muss ich daf?r includieren?
und muss ich vielleicht noch spezielle librarys einbinden?
oder kann es sein, dass dies nur bei BCB tut und nicht bei MSVC++ 6.0?
^^hoffentlich funktioniert das auch!
dann sage ich n?mlich schonmal danke. -
welche header-dateien muss ich daf?r includieren?
und muss ich vielleicht noch spezielle librarys einbinden?
oder kann es sein, dass dies nur bei BCB tut und nicht bei MSVC++ 6.0?
^^hoffentlich funktioniert das auch!
dann sage ich n?mlich schonmal danke.
Oben is mit VCL-Objekten die funzen nat?rlich net unter VC++ aber die Funktion CreateRectRgn, SetWindowRgn, CombineRgn sind API- Funktion (winuser.h, user32.lib) drum hab ich noch unten nen Link zur ner L?sung unter VC++ -
das ist mir doch ein bisschen zu kompliziert!
gibt es da keine ei fachere l?sung? -
das ist mir doch ein bisschen zu kompliziert!
gibt es da keine ei fachere l?sung?
Das is die simpelste die ich kenn was verstehst denn net vielleicht kann ichs ja erl?utern :D
Die for schleifen bekommen die h?he(y) und breite(x) zugewiesen. Wenn Col (Farbe der Aktuellen Position xy) gleich Colmask ist (is der erste Pixel oben links) dann wirdt ein RGN erzeugt (CreateRectRgn, genau der Pixel der aktuellen Position) und CombineRgn verbindet beide Rgn. Sp?ter wird dann einfach mit SetWindowRgn der Durchsichtige Teil gesetzt. -
Bitte http://www.lima-city.de/boards.php?mode=thread&id=31837 lesen und fehlende geschweifte Klammern korrigieren. Sorry und danke.
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage