간단한 버전의 SVG 작성 라이브러리 (C++ 버전)

7812 단어 C++SVG

개요



이전에 C++에서 SVG를 작성하기위한 간단한 라이브러리를 작성했으므로 소개했습니다. 주로 연구 용도로 벡터 형식의 그림이 있을 때 사용하고 있습니다.

다운로드


  • htps : // 기주 b. 코 m / t 미치 / SvgD 라우 r

  • SvgDrawer 클래스



    생성자, 소멸자


  • SvgDrawer( const int width, const int height, const std::string& filename = std::string( "draw.svg" ) )생성자. (width, height)는 SVG 파일의 이미지 (?) 크기입니다. filename은 출력 파일 이름
  • void setViewBox ( const double mnx, const double mny, const double mxx, const double may )드로잉 가능 범위 지정.

  • 속성 설정


  • void init ( void )다양한 파라미터의 초기화. 파선을 실선으로 하고, 선폭을 1, 선의 색, 채우기 색을 검정으로 한다.
  • void setStrokeWidth ( const double width )선폭을 설정한다.
  • void setStrokeColor( const std::string &col )선의 색을 설정합니다. 색상은 문자열로 제공됩니다. "#AAC032"와 같은 16진법, "yellow"와 같은 직접 지정하는 방법, SVG에서 사용되고 있는 방법이면 ok.
  • void setFillColor( const std::string &col )채우기 색을 지정.
  • void setStrokeDash( const int dash_pitch )점선 간격을 지정합니다.

  • 그리기



    기하 요소를 실제로 그립니다. 색 등의 속성은 클래스내에서 설정된 것을 사용합니다.
  • void drawLine ( const double x0 , const double y0, const double x1, const double y1 )(x0, y0) - (x1, y1)에 선을 그립니다. 좌표계는 setViewBox로 지정한 것이 사용된다.
  • void drawCircle ( const double cx, const double cy, const double r )(cx, cy)를 중심으로 한 반경 r의 원을 그리기
  • void drawRect ( const double x0, const double y0, const double w, const double h )(x0, y0)을 원점으로 하여 크기(w, h)의 시각을 그린다

  • 예제


  • 컴파일시 표준 라이브러리 이외에는 필요하지 않습니다

  • example.cpp
    #include "SvgDrawer.hpp"
    
    int main ( int argc, char** argv ) {
        mi::SvgDrawer drawer ( 300, 300, "test.svg");/// サイズは300x300 
        drawer.setViewBox( -2, -2, 2, 2); //(-2,-2)-(2,2)の範囲
    
        drawer.setStrokeColor("red");
        drawer.drawLine(-1.5, -1.5, -1.5, 1.5);
        drawer.setStrokeColor("blue");
        drawer.drawLine(-1.5, 1.5, 1.5, 1.5);
        drawer.setStrokeColor("yellow");
        drawer.drawLine(1.5, 1.5, 1.5, -1.5);
        drawer.setStrokeColor("green");
        drawer.drawLine(1.5, -1.5, -1.5, -1.5);
        // automatically saved
        return 0;
    }
    

    결과



    test.svg
    <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width= "300" height="300">
    <line x1="37.5" y1="262.5" x2="37.5" y2="37.5" stroke-width="1" stroke="red" />
    <line x1="37.5" y1="37.5" x2="262.5" y2="37.5" stroke-width="1" stroke="blue" />
    <line x1="262.5" y1="37.5" x2="262.5" y2="262.5" stroke-width="1" stroke="yellow" />
    <line x1="262.5" y1="262.5" x2="37.5" y2="262.5" stroke-width="1" stroke="green" />
    </svg>
    

    좋은 웹페이지 즐겨찾기