C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[76236] 전자 칠판 통신에서 곡선 그리기
시동이 [] 930 읽음    2022-01-09 22:42
안녕하세요

통신 가능한 전자 칠판을 만들고 있습니다
마우스가 이미지에서 움직일 때 좌표를 전송하고,
그 좌표를 받아 LineTo로 그리는 방식을 사용하고 있는데
수신 받는 쪽에서 곡선이 부드럽게 그려지지 않고 각지게 그려지는 문제가 발생합니다.
어떻게 하면 곡선이 각지지 않고 송신창과 동일하게 그려질 수 있을까요?

//--------------------------------------------------------------------------------

void __fastcall TForm1::ServerSocket1ClientRead(TObject *Sender, TCustomWinSocket *Socket) //클라이언트로부터 메세지 수신
{
    int i;
    AnsiString Read, Prot;
    Read=Socket->ReceiveText();

    Prot=Read.SubString(1, 2);
    Read=Read.Delete(1, 2);
    if(Prot=="00")
    {
        {
            float Width_Ratio=StrToInt(Read.SubString(1, Read.Pos("^")-1));       //변수 Width_Ratio(임시)에 수신한 width값 저장
            Width_Ratio=(Image1->Picture->Bitmap->Width)/(Width_Ratio);            //진짜 Width_Ratio 계산
            Read=Read.Delete(1, Read.Pos("^"));

            float Height_Ratio=StrToInt(Read.SubString(1, Read.Pos("^")-1));      //변수 Height_Ratio(임시)에 수신한 Height값 저장
            Height_Ratio=(Image1->Picture->Bitmap->Height)/(Height_Ratio);      //진짜 Height_Ratio 계산
            Read=Read.Delete(1, Read.Pos("^"));

            int x=StrToInt(Read.SubString(1, Read.Pos("^")-1));
            x=x*Width_Ratio;
            Read=Read.Delete(1, Read.Pos("^"));
            int y=StrToInt(Read.SubString(1, Read.Pos("^")-1));
            y=y*Height_Ratio;
            Read=Read.Delete(1, Read.Pos("^"));

            Image1->Picture->Bitmap->Canvas->Pen->Color=StringToColor(Read.SubString(1, Read.Pos("^")-1));
            Read=Read.Delete(1, Read.Pos("^"));

            Image1->Picture->Bitmap->Canvas->Pen->Width=StrToInt(Read.SubString(1, Read.Pos("^")-1));
            Read=Read.Delete(1, Read.Pos("^"));


            Image1->Picture->Bitmap->Canvas->LineTo(x, y);
        }
    }

//---------------------------------------------------------------------------


void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)             //마우스
{
    if(write==0)
    {
        MouseClick=true;
        Image1->Picture->Bitmap->Canvas->MoveTo(X,Y);
        Image1->Picture->Bitmap->Canvas->LineTo(X,Y);

        for (int i = 0; i < Client_Number; i++) {
                ServerSocket1->Socket->Connections[i]->SendText("00StartDrawing"+IntToStr(Image1->Picture->Bitmap->Width)+"^"+IntToStr(Image1->Picture->Bitmap->Height)+"^"+IntToStr(X)+"^"+IntToStr(Y)+"^");

            }

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

+ -

관련 글 리스트
76236 전자 칠판 통신에서 곡선 그리기 시동이 930 2022/01/09
76239     Re:전자 칠판 통신에서 곡선 그리기 박영목.월천 932 2022/01/12
76244         Re:Re:전자 칠판 통신에서 곡선 그리기 901 2022/01/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.