【发布时间】:2018-03-23 10:50:04
【问题描述】:
像这样在我的项目中成功取出资源文件夹中的两张图片。
string BackGroundImage = "background_image";
string ObjectImage = "object_image";
var TheBackGroundImage = BitmapFactory.DecodeResource(Resources, Resources.GetIdentifier(BackGroundImage, "drawable", PackageName));
var TheObjectImage = BitmapFactory.DecodeResource(Resources, Resources.GetIdentifier(ObjectImage, "mipmap", PackageName));
之后我所做的是非常棘手的部分,我不知道如何完全正确。我尝试做的是创建一个以 BackgroundImage 为基础的新位图。然后我用我的第二个图像(ObjectImage)创建一个画布,该图像将位于 BackgroundImage 之上,并尝试将它们合并在一起。
Bitmap Result = Bitmap.CreateBitmap(TheBackGroundImage.Width, TheBackGroundImage.Height, TheBackGroundImage.GetConfig());
Canvas canvas = new Canvas(Result);
canvas.DrawBitmap(ObjectImage, new Matrix(), null);
canvas.DrawBitmap(ObjectImage, 79, 79, null);
这不像预期的那样工作,帆布是要走的路还是我应该看看其他东西?
如果我们看看我的 iOS 解决方案,我会这样做:
UIImage PhoneImage = UIImage.FromFile(PhonePath);
UIImage IconImage = UIImage.FromFile(IconPath);
UIImage ResultImage;
CGSize PhoneSize = PhoneImage.Size;
CGSize IconSize = IconImage.Size;
UIGraphics.BeginImageContextWithOptions(IconSize, false, IconImage.CurrentScale); //UIGraphics.BeginImageContextWithOptions(IconSize, false, IconImage.CurrentScale);
UIGraphics.BeginImageContext(PhoneSize);
CGRect Frame = (new CoreGraphics.CGRect(25, 29.5, 79, 79));
UIBezierPath RoundImageCorner = new UIBezierPath();
RoundImageCorner = UIBezierPath.FromRoundedRect(Frame, cornerRadius: 15);
PhoneImage.Draw(PhoneImage.AccessibilityActivationPoint);
RoundImageCorner.AddClip();
IconImage.Draw(Frame);
UIColor.LightGray.SetStroke();
RoundImageCorner.LineWidth = 2;
RoundImageCorner.Stroke();
ResultImage = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
var documentsDirectory = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
string jpgFilename = System.IO.Path.Combine(documentsDirectory, "app.png");
NSData image = ResultImage.AsPNG();
而且它在我的第二张图片周围也可以很好地使用边框。
如何调整我的代码以成功地将两个图像合并在一起并将第二个图像定位为最好像 CGRect 一样?
【问题讨论】:
-
merge two images你说的是什么类型的“合并”;阿尔法覆盖?一个 RGBa 组合,等等..,.... 通过显示您正在使用的 iOS 代码和可能的一两张图片,可能更容易理解您的期望。 -
@SushiHangover 用完整的 iOS 代码更新了问题。合并是指将两张透明图片放在一起并制作一张图片。