2017-12-02 2 views
-1

입력 된 그림에 따라 비트 맵 파일에 다른 색상의 도형이있는 프로그램에서 작업하고 있었지만 모양을 하나만 그려야 만 제대로 작동하지만 두 개 이상의 도형을 사용하면 오래 된 그림을 그립니다 그리고 오래 된 하나 잃어버린하지만 더 복잡한 그림을 만들려면 오버레이 그들을 필요합니다. 거기에 방법을 내가 비트 맵 파일을 건너 뛰려면 쓸 필요가없는 부분을 쓰고 싶지 않아? 또한 모든 픽셀 데이터를 저장할 배열을 만들었지 만 배열 요소 유형의 크기에 따라 800x800보다 큰 비트 맵을 사용하면 작동하지 않습니다. 나는 제안과 논평을 위해 열려 있습니다. 미리 감사드립니다.C에서 만든 비트 맵 파일에 두 개 이상의 모양이 중첩되어 있습니까?

+0

800x800x3은 약 2 메가 바이트입니다. 스택 제한을 초과했을 것입니다. 대신 힙에 데이터를 할당하십시오. 이미지 라이브러리를 사용하지 않는 이유는 무엇입니까? 아니면 운영 체제와 관련된 페인트 기능을 사용하지 않는 이유는 무엇입니까? –

+0

대단히 고맙습니다. 나는 그것에 대해 생각하지 않았습니다. 매우 어리석은 생각입니다. 이제 모든 것이 작동합니다. 나는 픽셀 구조 배열을 만들고 그것에 대한 메모리를 할당했으며 완벽하게 작동합니다. 이제는 편집하고 실제 bimap 파일에 쓰고 싶은이 배열의 픽셀을 편집합니다. – Enizimus

답변

0

투명한 배경을 사용하여 두 번째 도형을 그릴 필요가 있습니다. 사용중인 기술에 대한 정보를 제공하지 않아도 전적으로 자신에게 달려 있습니다.

+0

모든 세부 사항을 언급하지 않아서 죄송합니다. C에서이 작업을하고 표준 C 라이브러리 만 사용하고 있습니다. 나는 그것을 알아 냈다. 그러나 나는 투명한 배경을 얻기 위해 무엇을해야하는지 정확하게 모른다. 고맙습니다. – Enizimus

+0

마스크로 사용하려면 다른 비트 맵이 필요합니다. 이 비트 맵에서 값을 모두 1로 설정하고 두 번째 도형을 그리고 0을 다른 곳에 씁니다. 마지막으로 res1 [i] = (res1 [i] & ~ mask [i]) | (res2 [i] 및 mask [i]). 여기서 'res1'은 첫 번째 그리기의 결과이고, 'res2'는 두 번째, 'mask'는 마스킹 비트 맵이며 필자는 'i'가 픽셀 인덱스 인 경우 res2에서 두 번째 그리기가 발생할 새 값을 선택하고 res1의 기존 값. – SoronelHaetir

관련 문제