NeoSmartpen / Windows-SDK2.0

Neo smartpen SDK 2.0 for Windows Platform
GNU General Public License v3.0
21 stars 10 forks source link

A4용지 규격으로 드로잉 테스트하는방법 #14

Open shinhs92 opened 1 year ago

shinhs92 commented 1 year ago

안녕하세요

네오스마트팬 (M1+, N2) 두기종을 구매후, Ncode SDK 를 사용하여, Ncode-SDK2.0 에서 A4 규격으로 Dot 패턴을 인쇄하여 사용중인데 Windows-SDK2.0.demo 프로젝트에서 실시간 드로잉 이미지가 실제 드로잉되는 A4규격보다 더 작게 나오고, 위치또한 맞지않습니다. 해당문제를 해결하려면 프로젝트내 DrawStroke 메소드에서 변경해야하나요?

private void DrawStroke( Stroke stroke ) { this.Invoke( new MethodInvoker( delegate() { lock ( mDrawLock ) { //603 Ring Note Height 5.52 5.41 63.46 88.88 int dx = (int)( ( 5.52 mWidth ) / 63.46 ); int dy = (int)( ( 5.41 mHeight ) / 88.88 );

                Renderer.draw( mBitmap, stroke, (float)( mWidth / 63.46f ), (float)( mHeight / 88.88f ), -dx, -dy, 1, Color.FromArgb( 200, Color.Blue ) );

                pictureBox1.Image = mBitmap;
            }
        } ) );
    }
tiktakdad commented 1 year ago

저도 sdk이용해서 개발 중인데, 네오스마트펜 깃헙에서 여러가지 이슈글과 코드를 참조한 코드입니다. 테스트 결과 A4에서 거의 오차가 없는 것 같습니다. scale 변환 쪽만 참고하셔서 변경 하시면 될꺼에요. paperinformation에서 6.7로 대부분 나누면 값이 나옵니다.


     /**
     *   PaperInformation paper1 = new PaperInformation("Idea Pad", 609, 595.275f, 771.023f, 36.8503f, 107.716f);
     *   PaperInformation paper2 = new PaperInformation("RingNote", 603, 425.196f, 595.275f, 36.8503f, 36.8503f);
     *   PaperInformation paper3 = new PaperInformation("Idea Pad Mini", 620, 360f, 566.929f, 36.8503f, 36.8503f);
     *   PaperInformation paper4 = new PaperInformation("A4", 0, 595f, 842f, 0f, 0f);
     *   PaperInformation paper5 = new PaperInformation("College Note", 617, 612.283f, 793.7f, 36.8503f, 36.8503f);
     *   PaperInformation paper6 = new PaperInformation("Plain Note", 604, 498.897f, 708.661f, 36.8503f, 36.8503f);
     *   scale factor = 6.7f
     **/
    //
    //603 Ring Note Height  5.52  5.41  63.46   88.88 
    //                   A4 5.48, 5.48, 88.58, 125.67
    // int dx = (int)((5.52 * mWidth) / 63.46);
    // int dy = (int)((5.41 * mHeight) / 88.88);
    float bx = stroke[i].X + stroke[i].Fx * 0.01f;
    float by = stroke[i].Y + stroke[i].Fy * 0.01f;
    float bp = (float)stroke[i].Force / 1023;
    bx = bx * (float)(mWidth / 88.58f) - (float)((5.48 * mWidth) / 88.58);
    by = by * (float)(mHeight / 125.67f) - (float)((5.48 * mHeight) / 125.67f);