Runde, Sternformige Fenster erstellen
Erstellen von Fenster in verschieden Formen
Um ein rundes Fenster zu erstellen muss man die Funktion
so
weist aber jemand was an dieser Funkton
falsch ist?
werde sehr dankbar für eine Antwort.
Vprimachenko
HRGN R;
R=Create***Rgn(i,j,i+1,j+1);
SetWindowRgn(Handle, R, TRUE);
Statt *** setzt man name des Figurus(Ellipse für Kreis)
weist aber jemand was an dieser Funkton
HRGN R1, R2;
for(int i=0;i<255;i++){
for(int j=0;j<255;j++){
if (!(picture->canvas->pixels[i][j]==clRed)){
R1=CreateRestangleRgn(i,j,i+1,j+1);
}
CombineRgn(R2,R2,R1,RGN_OR);
}
}
SetWindowRgn(Handle, R1, TRUE);
werde sehr dankbar für eine Antwort.
Vprimachenko
4 Antworten
- LÖSUNG filippg schreibt am 07.07.2006 um 20:26:20 Uhr
- LÖSUNG 31640 schreibt am 07.07.2006 um 21:36:57 Uhr
- LÖSUNG 31640 schreibt am 10.07.2006 um 11:35:41 Uhr
- LÖSUNG 31640 schreibt am 18.07.2006 um 09:53:21 Uhr
- LÖSUNG 31640 schreibt am 10.07.2006 um 11:35:41 Uhr
- LÖSUNG 31640 schreibt am 07.07.2006 um 21:36:57 Uhr
LÖSUNG 07.07.2006 um 20:26 Uhr
LÖSUNG 07.07.2006, aktualisiert 23.10.2012
ja da hast du recht hab das jetzt umgeschrieben als
Hillft aber nicht ...
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->MessageBox("1","1",MB_OK);
HRGN R1, R2;
for(int i=0;i<255;i++){
for(int j=0;j<255;j++){
if (!(Image1->Canvas->Pixels[i][j] == clRed)){
R1=CreateRectRgn(i,j,i+1,j+1);
CombineRgn(R2,R2,R1,RGN_OR);
// Application->MessageBox(i,j,MB_OK);
}
}
}
Application->MessageBox("2","2",MB_OK);
SetWindowRgn(Form1->Handle, R2, true);
}
//---------------------------------------------------------------------------
LÖSUNG 10.07.2006, aktualisiert 23.10.2012
habe das fehler gefunden:
Man kann scheinbar nicht NULL mit RGN zusmmensetzen (funktion CombineRgn) also benutz ich son Umweg
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->MessageBox("1","1",MB_OK);
HRGN R1, R2;
R2=CreateRectRgn(0,0,1,1); //erste RGN erstellen
for(int i=0;i<255;i++){
for(int j=0;j<255;j++){
if (!(Image1->Canvas->Pixels[i][j] == clRed)){
R1=CreateRectRgn(i,j,i+1,j+1);
CombineRgn(R2,R2,R1,RGN_OR);
// Application->MessageBox(i,j,MB_OK);
}
}
}
R1=CreateRectRgn(0,0,1,1); //Erste RGN nochmal erstellen
CombineRgn(R2,R2,R1,RGN_DIFF); //wieder rausnehmen
Application->MessageBox("2","2",MB_OK);
SetWindowRgn(Form1->Handle, R2, true);
}
//---------------------------------------------------------------------------