2016-07-09 4 views
-2

(visual studio, windows form, C#)을 사용하여 일부 그림을 만들었습니다. 지금은 일이 무엇향후 수정을 위해 마우스 이벤트 그림 저장

내 목표는 그것이 내가 미래에 저장된 파일을 열 때 나는 내 오랜 작업을 계속할 수있는 도면을 저장하기 위해 저장 버튼 추가하는 것입니다

...

내가 비주얼 스튜디오를 열 때마다입니다 나는 모든 것을 다시 그려야한다.

+1

당신은 배열에있는 모든 그림을 넣을 수 있습니다 참조 이 배열을 파일에 저장하십시오. 다음에이 파일을로드하고 다시 그려야합니다. –

+0

Bitmap과 rectangle을 사용하여 이미지와 원을 그리는 중, 배열로 저장하는 방법을 모르겠습니다. ( –

+1

) 그저 아이디어 일 뿐이므로 개체 구조를 사용하여 파일에 직렬화 할 수 있습니다 (예 : BinaryFormatter 사용). . –

답변

1

첫 번째 작업은 그리는 데이터를 List<T>에 수집하는 것입니다. 당신이 원하는 경우

using System.IO; 
using System.Xml.Serialization; 

// all drawn curve points are collected here: 
List<List<PointF>> curves = new List<List<PointF>>(); 



private void SaveButton_Click(object sender, EventArgs e) 
{ 

    XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>)); 
    using (Stream writer = new FileStream(yourDrawingFileName, FileMode.Create)) 
    { 
     xmls.Serialize(writer, curves); 
     writer.Close(); 
    } 
} 

private void LoadButton_Click(object sender, EventArgs e) 
{ 
    if (File.Exists(yourDrawingFileName)) 
    { 

     XmlSerializer xmls = new XmlSerializer(typeof(List<List<PointF>>)); 
     using (Stream reader = new FileStream(yourDrawingFileName, FileMode.Open)) 
     { 
      var curves_ = xmls.Deserialize(reader); 
      reader.Close(); 
      curves = (List<List<PointF>>) curves_; 
      Console.Write(curves.Count + " curves loaded."); 
     } 
    } 
    yourPanelOrPictureBoxOrForm.Invalidate; 
} 

: 그들 (모두) my comments here 또는 여기 here.

레자의 답변을 참조 수집하는 방법에 대한 코드를 는 곡선을 그리는 데 사용할 수 있습니다 & 부하 간단한 PointF 목록을 저장하는 예이다 더 복잡한 클래스의 드로잉 작업을 저장하면 PointFyourClass으로 바꿉니다. 클래스가 직렬화 가능한지 확인하십시오! (Points도 물론 stringsints, 미세하고, Colors 약간의 도움이 필요합니다 ..) 더 복잡한 그리기 액션 클래스를 설계하는 방법에 대한 힌트를

here

+0

고마워, 시도해보고 알려 줄께 –

+0

예, 시간을내어 물어보십시오. whe 너는 문제가 생겨서 ..! – TaW