⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shiyan1.cpp

📁 用C++builder编写的应用程序
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "jpeg.hpp"
#include "shiyan1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{  Image1->Canvas->MoveTo(0,0);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::OCtrlO1Click(TObject *Sender)
{    if(OpenPictureDialog1->Execute())
   {
       CurrentFile=OpenPictureDialog1->FileName;
                if(ExtractFileExt(OpenPictureDialog1->FileName)==".jpg")
                {       TJPEGImage *JP=new TJPEGImage();
                        Graphics::TBitmap *Bit=new Graphics::TBitmap();
                        JP->LoadFromFile(CurrentFile);
                        Bit->Width=JP->Width;
                        Bit->Height=JP->Height;
                        Bit->Canvas->StretchDraw(Rect(0,0,Bit->Width,Bit->Height),JP);
                        Image1->Picture->Graphic=Bit;
                        delete JP;
                        delete Bit;
                 }
                 else
            
                     {   Image1->Picture->LoadFromFile(CurrentFile);  }

                   Form1->Caption=CurrentFile+"画图";
            }

}
//---------------------------------------------------------------------------



void __fastcall TForm1::SCtrlS1Click(TObject *Sender)
{
if(CurrentFile!=EmptyStr)
{Image1->Picture->SaveToFile(CurrentFile);
}
else   {A1Click(Sender);}
}
//---------------------------------------------------------------------------


void __fastcall TForm1::A1Click(TObject *Sender)
{
    if(SavePictureDialog1->Execute())
    {CurrentFile=SavePictureDialog1->FileName;
    SCtrlS1Click(Sender);
    }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton11Click(TObject *Sender)
{  DrawingTool=dtLine;
    Edit1->Enabled=false;
         Edit1->Visible=false;       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton13Click(TObject *Sender)
{   DrawingTool=dtRectangle;
      Edit1->Enabled=false;
         Edit1->Visible=false;       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton15Click(TObject *Sender)
{   DrawingTool=dtEllipse;
       Edit1->Enabled=false;
         Edit1->Visible=false;        
}
//---------------------------------------------------------------------------
//void __fastcall TForm1::Image1MouseUp(TObject *Sender,TMouseButton Button,TShiftState Shift,int X,int Y)
//{
//x=X;oy=Y;
//switch(sort)
//{
    // case 1:
           // Image1->Canvas->MoveTo(ox,oy);
         //   Image1->Canvas->LineTo(X,Y);
          ///  break;
    // case 2:
           // Image1->Canvas->Rectangle(ox,oy,X,Y);
           // break;
     //case 3:
         //   Image1->Canvas->Ellipse(ox,oy,X,Y);
           // break;
//}
//}

void __fastcall TForm1::SpeedButton16Click(TObject *Sender)
{ DrawingTool=dtRoundRect;
  Edit1->Enabled=false;
         Edit1->Visible=false;       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton7Click(TObject *Sender)
{
   DrawingTool=dtPencil;
    Edit1->Enabled=false;
         Edit1->Visible=false;       
}
//---------------------------------------------------------------------------

void __fastcall TForm1::SpeedButton8Click(TObject *Sender)
{
      DrawingTool=dtBrush;
         Edit1->Enabled=false;
         Edit1->Visible=false;       
}
//---------------------------------------------------------------------------
  void _fastcall TForm1::NoSelect()
 {
        if (Selecting){
           
          Image1->Canvas->Brush->Style =bsClear;
          Image1->Canvas->Pen->Style =psDot;
         Image1->Canvas->Pen->Width =1;
          Selecting=False;
           DrawShape(Origin,MovePt,pmNotXor);

        }
 }
  void __fastcall TForm1::DrawShape(TPoint TopLeft, TPoint BottomRight, TPenMode AMode)
  {
    Image1->Canvas->Pen->Mode = AMode;
     Image1->Canvas->Brush->Style=bsClear;
    switch (DrawingTool){
           case dtLine : {
                Image1->Canvas->MoveTo(TopLeft.x, TopLeft.y);
                Image1->Canvas->LineTo(BottomRight.x,BottomRight.y);
                break;
           }

           case dtRectangle :
            case dtSelect:
            {
                Image1->Canvas->Rectangle(TopLeft.x, TopLeft.y, BottomRight.x, BottomRight.y);
                break;
           }

           case dtEllipse : {
                Image1->Canvas->Ellipse(TopLeft.x, TopLeft.y, BottomRight.x, BottomRight.y);
                break;
           }

           case dtRoundRect : {
                Image1->Canvas->RoundRect(TopLeft.x, TopLeft.y, BottomRight.x, BottomRight.y, (TopLeft.x - BottomRight.x)/2, (TopLeft.y - BottomRight.y)/2);
                break;
           }
    }
}
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{

     Drawing=True;

        switch(DrawingTool){
        case dtPencil:{
          if (Button!=mbLeft)
            return;
          Image1->Canvas->Pen->Width=1;
          Image1->Canvas->Pen->Color=Panel7->Color ;
          Image1->Canvas->Brush->Color =Panel6->Color ;
          Image1->Canvas->MoveTo(X,Y);
          break;}
        case dtBrush:{
         if (Button!=mbLeft)
            return;
          Image1->Canvas->Pen->Width=4;
          Image1->Canvas->Pen->Color=Panel7->Color ;
          Image1->Canvas->Brush->Color =Panel6->Color ;
          Image1->Canvas->MoveTo(X,Y);
          break;}
       case dtErase:{
          if (Button!=mbLeft)
            return;
          Image1->Canvas->Pen->Width=3;
          Image1->Canvas->Pen->Color=Panel6->Color ;
          Image1->Canvas->Brush->Color =Panel6->Color ;
          Image1->Canvas->MoveTo(X,Y);
          Origin=Point(X,Y);
          MovePt=Origin;
          break;}
        case dtFill:{
          if(Button==mbLeft)
            Image1->Canvas->Brush->Color=Panel7->Color ;
          else {
            Image1->Canvas->Brush->Color =Panel6->Color ; }
          Image1->Canvas->FloodFill(X,Y,Image1->Canvas->Pixels[X][Y],fsSurface);
           break;
        }
       case dtFog:{
          for(int i=0;i<Size*Size/16;i++){
            Image1->Canvas->Pixels [X+random(Size)][Y+random(Size)]=Panel7->Color;
          }
          break;
        }
      case dtSelect: {
           NoSelect() ;
          Image1->Canvas->Brush->Style =bsClear;
          Image1->Canvas->Pen->Style =psDot;
          Origin=Point(X,Y);
          MovePt=Origin;
          Image1->Canvas->Pen->Color =Panel7->Color ;

           break; }
       case dtSoak:{
          if(Button==mbLeft) {
            Panel7->Color=Image1->Canvas->Pixels [X][Y];}
          else{
             Panel6->Color =Image1->Canvas->Pixels [X][Y]; }
          break;
        }


        case dtText:{
          if(X<Image1->Width-Edit1->Width&&Y<Image1->Height-Edit1->Height)
           {
              Image1->Canvas->TextOutA( Edit1->Left-Image1->Left,Edit1->Top-Image1->Top,Edit1->Text) ;
              
              Edit1->Clear();
              Edit1->Top=Y+Image1->Top;
              Edit1->Left=X+Image1->Left;
              }

              break;}  
        case dtLine:
        case dtRectangle:
        case dtEllipse:
        case dtRoundRect:
        {
          Image1->Canvas->MoveTo(X,Y);
          Origin=Point(X,Y);
          MovePt=Origin;
          TVarRec tempvar[2]={X,Y};
          StatusBar1->Panels->Items[0]->Text =Format("Position:(%d,%d)",tempvar,2);
          Image1->Canvas->Pen->Color =Panel7->Color ;
          Image1->Canvas->Brush->Color =Panel6->Color ;
        break;
        }
       case dtPoly: {
                MovePt=Point(X,Y);

             if(fp) {
               PrePt=Point(X,Y);
               Origin=PrePt;
               Image1->Canvas->MoveTo(X,Y);
               fp=false;
                    }
           else{
              Image1->Canvas->Pen->Mode=pmCopy;
              Image1->Canvas->LineTo(MovePt.x, MovePt.y);
               }
              
              break;
              }
           case dtmagnify:
           {
                if(Button==mbLeft)
                {
                Graphics::TBitmap *bm=new Graphics::TBitmap();
                bm->Width=Image1->Picture->Width*1.2;
                bm->Height=Image1->Picture->Height*1.2;
                bm->Canvas->StretchDraw(TRect(0,0,bm->Width,bm->Height),Image1->Picture->Graphic);
                Image1->Picture->Graphic=bm;
                delete bm;
                }
                else
                {
                Graphics::TBitmap *bm=new Graphics::TBitmap();
                bm->Width=Image1->Picture->Width/1.2;
                bm->Height=Image1->Picture->Height/1.2;
                bm->Canvas->StretchDraw(TRect(0,0,bm->Width,bm->Height),Image1->Picture->Graphic);
                Image1->Picture->Graphic=bm;
                delete bm;
                }

           }




}
  TVarRec tempvar[2] = {X, Y};
  StatusBar1->Panels->Items[0]->Text = Format("Start: (%d, %d)", tempvar, 2);
 }
//---------------------------------------------------------------------------





void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        if(Drawing){
          switch (DrawingTool){
          case dtPencil:
          case dtBrush:
          case dtErase:
           Image1->Canvas->LineTo(X,Y);
           break;
         case dtSelect:
          case dtLine:
         case dtRectangle:
          case dtEllipse:
         case dtRoundRect: {
             DrawShape(Origin,MovePt,pmNotXor);
            MovePt=Point(X,Y);
             DrawShape(Origin,MovePt,pmNotXor);
            break;}
              case dtPoly:
                {    if(fp)
                     {
               Image1->Canvas->Pen->Mode=pmNotXor;
               Image1->Canvas->MoveTo(PrePt.x ,PrePt.y );
               Image1->Canvas->LineTo(X,Y);
               PrePt=Point(X,Y);
               Image1->Canvas->Pen->Mode=pmNotXor;
               Image1->Canvas->MoveTo(PrePt.x ,PrePt.y );
               Image1->Canvas->LineTo(X,Y);
                    }
               break;

               }

          
  }

  TVarRec tempvar[2] = {X, Y};
  StatusBar1->Panels->Items[1]->Text = Format("Current: (%d, %d)", tempvar, 2);

}  }
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
   if(Drawing){
          if (Button!=mbLeft)
            return;
          switch (DrawingTool){
            case dtPencil:
              {Image1->Canvas->Pen->Width =1;
            break;}
            case dtErase:
            {Image1->Canvas->Pen->Width =1;
            break;}
            case  dtBrush:
            {Image1->Canvas->Pen->Width=1;break;}
            case dtSelect :{
              Image1->Canvas->Brush->Style =bsSolid;
              Image1->Canvas->Pen->Width =1;
              Image1->Canvas->Pen->Style =psSolid;
              MovePt=Point(X,Y);
              Selecting=true;
              selectrect=(TRect(Origin,MovePt)) ;

               break;
            }
              case dtPoly: {
                 if(fp)
                 {
                 Image1->Canvas->Pen->Mode =pmCopy;
                 Image1->Canvas->MoveTo(PrePt.x ,PrePt.y );
                Image1->Canvas->LineTo(X,Y);
                }
           PrePt=Point(X,Y);
           if(!np)
             {fp=true;
             np=true;
             }

           break;
              }
           case dtLine:
           case dtRectangle:
           case dtEllipse:
           case dtRoundRect:
              {DrawShape(Origin,Point(X,Y),pmCopy);
              break;
              }
           }
         Drawing=False;

}  }
//---------------------------------------------------------------------------






void __fastcall TForm1::Panel10MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
if (Button==mbLeft)
   Panel7->Color=Panel10->Color;
  else
    Panel6->Color=Panel10->Color;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -