나는 잘 작동하지만, 안드로이드에서 완전히 엉망이 된 이미지를 가져 오는 코드가 있습니다. 나는 부분 해결 (일부 코드를 호출하지 않음) 발견,하지만 뭔가 끔찍한 잘못 힌트 :이상한 델파이 안드로이드 이미지 할당/이미지 왜곡 된 문제
// some bitmap object buffer for mainthread only
R.BitmapRef := FPersistentBitmapBuffer;
// this TImage now contains the original wrongly sized bitmap
ImageBackground.Bitmap.Assign(R.BitmapRef);
// calculated somewhere
TmpNewWidth := 500;
TmpNewHeight := 500;
// draw the bitmap resized to wanted size
R.BitmapRef.Width := Round(TmpNewWidth);
R.BitmapRef.Height := Round(TmpNewHeight);
R.BitmapRef.Canvas.BeginScene();
R.BitmapRef.Canvas.DrawBitmap(ImageBackground.Bitmap, RectF(0,0,ImageBackground.Bitmap.Width,ImageBackground.Bitmap.Height), RectF(0,0,TmpNewWidth,TmpNewHeight), 1);
R.BitmapRef.Canvas.EndScene();
// assign it back to the image
ImageBackground.Bitmap.Assign(R.BitmapRef);
// THIS code causes the image shown in TImageBackground to look completely garbled ... which would indicate something is shareing memory/reference somewhere somehow... There is more odd behavior like debugger unhooking (it seems) if mouse in Delphi debugger hovers over ImageBackground.Bitmap - no error is reported
R.BitmapRef.Clear(TAlphaColorRec.White);
에서 볼 수있는 바와 같이 , 그것은 그것을 엉망으로 마지막 줄. 일부 테스트에서는 라인을 제거하는 것으로 충분하지만 다른 라인에서는 제거하지 않는 것으로 보입니다. 이것은 내 최고의 리드/설명/문제의 예입니다.
다음은 왜곡 된 이미지의 모양을 보여주는 예입니다. 앱을 실행할 때마다 동일한 방식으로 문자가 깨져 보이기 때문에 이미지와 관련이 있어야한다고 생각하지만 시각적 유사성은 없습니다.
내 질문에 무엇이 잘못되었을 수 있습니까? Delphi XE7 평가판을 테스트 중이므로 소스에 액세스 할 수 없습니다. 그것은 XE4와 XE7을 사용하여 iOS에서 완벽하게 작동했지만 안드로이드는 무언가 진행되고 있습니다. 나는 그것이 아마도 참조를 공유하는 비트 맵 데이터 일 수 있다고 생각하고 있습니다 ... 누군가가이 이론/가능한 해결 방법을 테스트하는 방법에 대한 아이디어가 있습니까?
나는 기술적으로 당신이 여기에 어떤 질문도하지 않기 때문에 "당신이 묻고있는 것이 확실하지 않습니다"라는 질문을 닫을 투표를한다고 가정합니다. 귀하의 질문은 "이 문제를 해결하는 방법"이라고 가정합니다. –
나는 지금 질문을 추가했다 - 그리고 실제로 당신이 맞다 - 내 질문은 디버그/해결/문제를 해결하는 방법입니다. – Tom
스크린 샷을 포함 할 수도 있습니다. 또한, 다른 장치 또는 에뮬레이터에서만 테스트 했습니까? – mjn