我正在尝试生成BitmapFrame基于UIElement. 这是我的功能:
private BitmapFrame RenderToBitmap2()
{
RenderTargetBitmap renderBitmap = new RenderTargetBitmap(200, 200, 96, 96, PixelFormats.Pbgra32);
DrawingVisual drawingVisual = new DrawingVisual();
DrawingContext drawingContext = drawingVisual.RenderOpen();
VisualBrush aVisualBrush = new VisualBrush(GenerateTestStackPanel());
drawingContext.DrawRectangle(aVisualBrush, new Pen(Brushes.Green, 2), new Rect(new Size(150, 150)));
drawingContext.Close();
renderBitmap.Render(drawingVisual);
return BitmapFrame.Create(renderBitmap);
}
Run Code Online (Sandbox Code Playgroud)
出于测试和调试目的,我使用了一个附加函数来创建一个简单的 StackFrame,它应该创建一个可以表示的有效视觉元素:
private StackPanel GenerateTestStackPanel()
{
// Create a red Ellipse.
Ellipse myEllipse = new Ellipse();
myEllipse.Fill = Brushes.Green;
myEllipse.StrokeThickness = 2;
myEllipse.Stroke = Brushes.Black;
// Set the width and height of …Run Code Online (Sandbox Code Playgroud) 我有一个在 android 上运行的游戏。
基本上,它的结构就像lunarlander
我开始了我的活动,使用布局开始运行课程。
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<my.darling.gameView
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</FrameLayout>
Run Code Online (Sandbox Code Playgroud)
当我按下家时,我每次都可以回到我的比赛中。我总是关闭线程并创建一个新线程。
当我按下 BACK 按钮时出现问题。
我想我的比赛结束了。但是在“点击游戏”->“点击返回”4次之后
出现错误->“意外停止”
我已经覆盖了函数 :onPause()并调用了finish(). 但它仍然会发生。
谁能帮我?
我准备了一个自定义视图。我的视图包含我在 onDraw() 中使用 drawText 绘制的一个字母表。现在我需要将此视图更改为位图。
这里我的 OnDraw() 是,
public void onDraw(Canvas canvas) {
drawText("A",100,200,mPaint);
}
Run Code Online (Sandbox Code Playgroud)
我需要将此视图转换为位图...请帮助我...提前致谢。
我有位图图像变量,我想将它绑定到我的 xaml 窗口。
System.Reflection.Assembly thisExe;
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
string[] resources = thisExe.GetManifestResourceNames();
var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("SplashDemo.Resources.Untitled-100000.png");
Bitmap image = new Bitmap(stream);
Run Code Online (Sandbox Code Playgroud)
这是我的 xaml 代码
<Image Source="{Binding Source}" HorizontalAlignment="Left" Height="210" Margin="35,10,0,0" VerticalAlignment="Top" Width="335">
</Image>
Run Code Online (Sandbox Code Playgroud)
你能帮我通过 C# 代码将此位图变量绑定到这个 xaml 图像吗?
我有一个对应于“灰度位图”(一个字节-> 一个像素)的字节数组,我需要为此图像创建一个 PNG 文件。
下面的方法有效,但创建的 png 很大,因为我使用的位图是 ARGB_8888 位图,每个像素需要 4 个字节而不是 1 个字节。
我无法让它与 ARGB_8888 不同的其他 Bitmap.Config 一起工作。也许 ALPHA_8 是我需要的,但我一直无法让它工作。
我也尝试过其他一些帖子中包含的 toGrayScale 方法(在 Android 中将位图转换为灰度),但我对大小有同样的问题。
public static boolean createPNGFromGrayScaledBytes(ByteBuffer grayBytes, int width,
int height,File pngFile) throws IOException{
if (grayBytes.remaining()!=width*height){
Logger.error(Tag, "Unexpected error: size mismatch [remaining:"+grayBytes.remaining()+"][width:"+width+"][height:"+height+"]", null);
return false;
}
Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
// for each byte, I set it in three color channels.
int gray,color;
int x=0,y=0;
while(grayBytes.remaining()>0){
gray = grayBytes.get();
// integer may be …Run Code Online (Sandbox Code Playgroud) 我有以下方法,它有一个 ImageSwitcher,用户可以左右滑动。所选图像显示在屏幕中央。我已经在低内存手机上对高分辨率图像进行了一些图像缩放,但是当从左到右快速滑动时,我仍然遇到 Bitmap OutOfMemoryEexception。我想改变这条线mSwitcher.setImageURI(myUri);(这是导致 OOME 的行)转换为使用弱引用,以便它可以自动进行垃圾收集。我怎样才能做到这一点?这是性能优化此方法的最佳方法吗?
谢谢
方法:
public void onItemSelected(AdapterView parent, View v, int position, long id) {
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyAppName");
File[] cachedOnSDImages = mediaStorageDir.listFiles();
countArray = new Integer[cachedOnSDImages.length];
fileArray = new String[cachedOnSDImages.length];
fileArray[position] = cachedOnSDImages[position].getAbsolutePath();
Uri myUri = Uri.parse(fileArray[position]);
mSwitcher.setImageURI(myUri); // weakly reference myUri in this line
this.currentpos = position;
}
Run Code Online (Sandbox Code Playgroud)
我应该在这里添加 mSwitcher 实例化:
private void makeSwitcher() {
mSwitcher = (ImageSwitcher) findViewById(R.id.switcher);
mSwitcher.setFactory(this);
mSwitcher.setInAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_in));
mSwitcher.setOutAnimation(AnimationUtils.loadAnimation(this,
android.R.anim.fade_out));
}
Run Code Online (Sandbox Code Playgroud) 我正在使用 Win32。我在这里发现,如果您使用:
BitBlt(hdc, 0, 0, 32, 32, hdcMem, 0, 0, SRCAND); // hdc has mask in it
BitBlt(hdc, 0, 0, 32, 32, hdcMem, 0, 0, SRCPAINT);`// hdc has regular image in it
Run Code Online (Sandbox Code Playgroud)
您可以创建位图透明度。我的问题是,这依赖于 hdc 在目标位置上已经是空的事实。我的不是,所以代码擦除(使黑色)现有图像的一部分。如何将透明位图复制到已绘制内容的区域?
我尝试将掩码和图像发送到 1000, 1000 - hdc 中没有绘制任何内容,然后在 BitBlt() 中使用 SRCCOPY 将结果从 hdc 复制到 hdc。但是要么没有在 1000、1000 处提取,要么没有正确复制回来。
对于科学会议,论文的文件大小通常是有限的。我喜欢将我的绘图包含为 pdf,因此文本和线条保持清晰。但是,当我创建包含大量数据的假彩色图或散点图时,导出的 pdf 很容易变得比允许的整篇论文大。
有没有办法只将轴区域导出到位图,以便稍后将其包含在矢量轴中?(或者有没有更好的方法来获得一些嵌入为位图的元素的 pdf?)
我希望有人能在这里帮助我。由于这是我的第一篇文章,因此对如何改进我的问题的评论表示赞赏。
我想将图像过滤器应用于我的图像并使用android HelloEffects 示例
它将图像数据从位图转换为纹理。
应用图像滤镜效果后,我想将图像恢复为 jpeg 格式,但不知道该怎么做。
我正在CBitmap使用CDC. 当我完成它时,我想将它保存到一个文件中。我已经看到有关该代码LINK的进程的一些信息:
CFile file;
if(file.Open(szFileName, CFile::modeCreate | CFile::modeWrite))
{
file.Write(&bh, sizeof(BITMAPFILEHEADER));
file.Write(&(bi.bmiHeader), sizeof(BITMAPINFOHEADER));
file.Write(lpBitmapBits, 3 * nWidth * nHeight);
file.Close();
}
Run Code Online (Sandbox Code Playgroud)
我的疑问是关于BITMAPFILEHEADER和BITMAPINFOHEADER。我怎样才能用给定的CBitmapor填充它们CDC?