Фрактал биоморф c++ builder 6 под windows 10
Можно менять цвет любой области
Есть возможность сохранить в файл
Функция SetBkMode(hdc, TRANSPARENT); прозрачность фона текста
Исходник и исполняемый файл здесь
=
=
=
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
jp = new TJPEGImage();
// jp->CompressionQuality=60;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
delete jp;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::KUB(void)
{
RE1=RE*(RE*RE-3*IM*IM) ;
IM1=IM*(3*RE*RE-IM*IM) ;
RE=RE1 ;
IM=IM1 ;
}
//------------------------------------------------------------------
void __fastcall TForm1::drawBiomorf(void)
{
TColor
col1=ColorBox1->Selected,
col2=ColorBox2->Selected,
col3=ColorBox3->Selected,
col4=ColorBox4->Selected,
col5=ColorBox5->Selected,
col6=ColorBox6->Selected,
col7=ColorBox7->Selected,
col8=ColorBox8->Selected;
for(register int X=-320; X<420; X=X+1 )
{
for(register int Y=-240; Y<241; Y=Y+1 )
{
RE=-1+0.008*X ; //
IM=0+0.008*Y ; //
register int V ;
for( V=0; V<10; V++ )
{
KUB() ;
KUB() ;
RE=RE-0.9; IM=IM+0.08;
//RE=RE-0.9; IM=IM+0.18;
// RE=sqrt(RE*RE); IM=sqrt(IM*IM); RE=RE-0.9 ; IM=IM+0.08 ;
if( RE*RE > 5){ goto s ; }
if( IM*IM > 6){ goto s; }
}
s:
if ( fabs(RE) < 7 || fabs(IM) < 3 )
{
if(V==0) Image1->Canvas->Pixels[X+220][Y+240]=col1;// clGray; //RGB(50,230,50);
if(V==1) Image1->Canvas->Pixels[X+220][Y+240]=col2;// clGreen;
if(V==2) Image1->Canvas->Pixels[X+220][Y+240]=col3;// clBlue;
if(V==3) Image1->Canvas->Pixels[X+220][Y+240]=col4;// clRed;
if(V==4) Image1->Canvas->Pixels[X+220][Y+240]=col6;// clMaroon;
if(V==5) Image1->Canvas->Pixels[X+220][Y+240]=col7;// clPurple;
if(V==6) Image1->Canvas->Pixels[X+220][Y+240]=col8;// clBlack;
}
else {
Image1->Canvas->Pixels[X+220][Y+240]=col5;//clWhite;
}
}
ProgressBar1->Position=fabs(320+X);
}
}
//-----------------------------------------------------------------------
void __fastcall TForm1::drawBiomorf1(void)
{
TColor
col1=ColorBox1->Selected,
col2=ColorBox2->Selected,
col3=ColorBox3->Selected,
col4=ColorBox4->Selected,
col5=ColorBox5->Selected,
col6=ColorBox6->Selected,
col7=ColorBox7->Selected,
col8=ColorBox8->Selected;
for(register int X=-320; X<420; X=X+1 )
{
for(register int Y=-240; Y<241; Y=Y+1 )
{
RE=-1+0.008*X ; //
IM=0+0.008*Y ; //
register int V ;
for( V=0; V<10; V++ )
{
KUB() ;
KUB() ;
//RE=RE-0.9; IM=IM+0.08;
//RE=RE-0.9; IM=IM+0.18;
RE=sqrt(RE*RE); IM=sqrt(IM*IM); RE=RE-0.9 ; IM=IM+0.08 ;
if( RE*RE > 5){ goto s ; }
if( IM*IM > 6){ goto s; }
}
s:
if ( fabs(RE) < 7 || fabs(IM) < 3 )
{
if(V==0) Image1->Canvas->Pixels[X+220][Y+240]=col1;// clGray; //RGB(50,230,50);
if(V==1) Image1->Canvas->Pixels[X+220][Y+240]=col2;// clGreen;
if(V==2) Image1->Canvas->Pixels[X+220][Y+240]=col3;// clBlue;
if(V==3) Image1->Canvas->Pixels[X+220][Y+240]=col4;// clRed;
if(V==4) Image1->Canvas->Pixels[X+220][Y+240]=col6;// clMaroon;
if(V==5) Image1->Canvas->Pixels[X+220][Y+240]=col7;// clPurple;
if(V==6) Image1->Canvas->Pixels[X+220][Y+240]=col8;// clBlack;
}
else {
Image1->Canvas->Pixels[X+220][Y+240]=col5;//clWhite;
}
}
ProgressBar1->Position=fabs(320+X);
}
}
//-----------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
if(RadioButton1->Checked ==true) drawBiomorf();
if(RadioButton2->Checked ==true) drawBiomorf1();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
AnsiString FNamet= "biomorf";
FNamet=FNamet+".jpg";
Image1->Canvas->Pen->Color= clBlack;
Image1->Canvas->MoveTo(1,1);
Image1->Canvas->LineTo(Image1->Width-1,1);
Image1->Canvas->LineTo(Image1->Width-1,Image1->Height-1 );
Image1->Canvas->LineTo(1,Image1->Height-1 );
Image1->Canvas->LineTo(1,1 );
Image1->Canvas->Font->Color= clBlack;// clGreen; clWhite;
Image1->Canvas->Font->Size = 12 ;
Image1->Canvas->Font->Style = Image1->Canvas->Font->Style << fsBold;
HDC hdc = Image1->Canvas->Handle;
SetBkMode(hdc, TRANSPARENT);
Image1->Canvas->TextOutA(10 ,10 ,FNamet );
Image1->Canvas->TextOutA(10 ,30 ,"dokakodm.ucoz.ru" );
Image1->Canvas->Font->Style = Image1->Canvas->Font->Style >> fsBold;
Image1->Canvas->Font->Size = 8;
Image1->Canvas->Font->Color=clBlack;
AnsiString FNames=FNamet;
SavePictureDialog1->FileName=FNames;
if(SavePictureDialog1->Execute()){
FNames= SavePictureDialog1->FileName;
jp->Assign( Image1->Picture->Bitmap ) ;
jp->SaveToFile(FNames) ;
}
// ShowMessage();
}
//---------------------------------------------------------------------------
=
=
=
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <Buttons.hpp>
#include <Dialogs.hpp>
#include <ExtDlgs.hpp>
#include <jpeg.hpp>
#include <math.h>
#include <ComCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPanel *Panel1;
TPanel *Panel2;
TImage *Image1;
TSavePictureDialog *SavePictureDialog1;
TBitBtn *BitBtn1;
TBitBtn *BitBtn2;
TColorBox *ColorBox1;
TColorBox *ColorBox2;
TColorBox *ColorBox3;
TColorBox *ColorBox4;
TColorBox *ColorBox5;
TColorBox *ColorBox6;
TColorBox *ColorBox7;
TColorBox *ColorBox8;
TLabel *Label1;
TShape *Shape1;
TProgressBar *ProgressBar1;
TRadioGroup *RadioGroup1;
TRadioButton *RadioButton1;
TRadioButton *RadioButton2;
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall BitBtn2Click(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
private: // User declarations
public: // User declarations
float RE,IM,RE1,IM1 ;
void __fastcall KUB(void);
void __fastcall drawBiomorf(void);
void __fastcall drawBiomorf1(void);
TJPEGImage *jp ;
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
=
=
=
|