프로젝트

일반

사용자정보

개정판 ce54afaf

IDce54afafe58281ba05a858715340ce6188511d7f
상위 d1f35ad3
하위 cda7efcc

김태성이(가) 5달 전에 추가함

issue #00000 signmanager image load 수정

Change-Id: I797d22f972829a94f74f426077d28d05d042a54c

차이점 보기:

KCOM/Controls/SignManager.xaml
138 138
                <Image x:Name="preview" Stretch="Fill"/>
139 139
            </Border>-->
140 140
        </Grid>
141
        <Grid
142
            x:Name="panelProgress"
143
            Grid.RowSpan="3"
144
            Background="#7F808080"
145
            Visibility="Collapsed">
146
            <StackPanel VerticalAlignment="Center">
147
                <ProgressBar
148
                    x:Name="progress"
149
                    Width="400"
150
                    Height="30" />
151
                <TextBlock
152
                    HorizontalAlignment="Center"
153
                    FontStyle="Italic"
154
                    FontWeight="Bold"
155
                    Foreground="Black"
156
                    Text="Waiting...." />
157
            </StackPanel>
158
        </Grid>
141 159
    </Grid>
142 160
</UserControl>
KCOM/Controls/SignManager.xaml.cs
231 231
            // 픽셀 데이터 복사
232 232
            writeableBitmap.CopyPixels(pixelData, stride, 0);
233 233

  
234
            progress.Maximum = writeableBitmap.PixelHeight * writeableBitmap.PixelWidth;
235

  
234 236
            for (int y = 0; y < writeableBitmap.PixelHeight; y++)
235 237
            {
236 238
                for (int x = 0; x < writeableBitmap.PixelWidth; x++)
......
251 253
                        Stroke stroke = new Stroke(points);
252 254
                        inkCanvas.Strokes.Add(stroke);
253 255

  
254
                        System.Threading.Thread.SpinWait(10);
256
                        //System.Threading.Thread.SpinWait(10);
255 257
                    }
258

  
259
                    // Update progress value
260
                    progress.Dispatcher.Invoke(() => { 
261
                        progress.Value = y * writeableBitmap.PixelWidth + x + 1;
262
                    });
256 263
                }
257 264
            }
258 265

  
......
308 315
            // 파일 선택 대화 상자 표시
309 316
            if (openFileDialog.ShowDialog() == true)
310 317
            {
311
                // 선택한 파일 경로 가져오기
312
                string filePath = openFileDialog.FileName;
318
                panelProgress.Dispatcher.Invoke(() => panelProgress.Visibility = Visibility.Visible);
319

  
320
                try
321
                {
322
                    // 선택한 파일 경로 가져오기
323
                    string filePath = openFileDialog.FileName;
324

  
325
                    // BitmapImage 생성 및 파일 로드
326
                    BitmapImage bitmapImage = new BitmapImage();
327
                    bitmapImage.BeginInit();
328
                    bitmapImage.UriSource = new Uri(filePath);
329
                    bitmapImage.EndInit();
313 330

  
314
                // BitmapImage 생성 및 파일 로드
315
                BitmapImage bitmapImage = new BitmapImage();
316
                bitmapImage.BeginInit();
317
                bitmapImage.UriSource = new Uri(filePath);
318
                bitmapImage.EndInit();
331
                    var strokes = ConvertImageToStrokeCollection(bitmapImage);
319 332

  
320
                var strokes = ConvertImageToStrokeCollection(bitmapImage);
333
                    SignCanvas.Strokes.Add(strokes);
321 334

  
322
                SignCanvas.Strokes.Add(strokes);
335
                }
336
                catch (Exception)
337
                {
338
                    MessageBox.Show("이미지 오류입니다.");
339
                }
340
                finally
341
                {
342
                    panelProgress.Dispatcher.Invoke(() => panelProgress.Visibility = Visibility.Collapsed);
343
                }
323 344
            }
324 345
        }
325 346
    }

내보내기 Unified diff

클립보드 이미지 추가 (최대 크기: 500 MB)