我想设计一个类库并计划使用多线程(即BackgroundWorker).如果我打算将它们绑定到使用前端的库的GUI,我将不得不注意线程上下文,从中为字段进行更新.在我阅读时,将GUI调度程序的引用传递给库并不是一个好主意.但是,如何才能访问将使用该库的应用程序的调度程序?这可能吗?
我尝试Application.Current.Dispatcher并添加了一个引用WindowBase(因为我没有添加的可能性System.Windows),但仍然无法解析调度程序对象.
我需要一些澄清.我正在我的笔记本电脑上运行OpenCL,运行一个小型的nvidia GPU(310M).当我查询设备时CL_DEVICE_MAX_COMPUTE_UNITS,结果是2.我读取运行内核的工作组数量应该与计算单元的数量相对应(使用OpenCL进行异构计算,第9章,第186页),否则会浪费全球记忆力很强.
此外,芯片被指定具有16个cuda核心(对应于我认为的PE).这在理论上是否意味着,对于全局内存带宽,此gpu的最高性能设置是有两个工作组,每个工作项有16个工作项?
我正在使用LaTeX-Beamer类进行演示.每隔一段时间我都需要包含截图.当然,这些图形是基于像素的.我用includegraphics这样的:
\begin{figure}
\includegraphics[width= \paperwidth]{img/analyzer.png}
\end{figure}
Run Code Online (Sandbox Code Playgroud)
或者通常是这样的:
\begin{figure}
\includegraphics[width= 0.8\linewidth]{img/analyzer.png}
\end{figure}
Run Code Online (Sandbox Code Playgroud)
这会导致所包含文本的可读性非常差,所以我要求您提供最佳实践:如何考虑包含文本的屏幕截图,我将使用输出PDF pdflatex?
编辑:我想我正在寻找类似于投影仪内图像的1:1预设的东西.但是,[scale = 1.0]没有实现我正在寻找的东西.
[编辑]我改变了斯蒂芬马丁建议的来源(以粗体突出显示).并添加了C++源代码.
我想在自编的C++ DLL中调用一个非托管函数.该库读取机器的共享内存,以获取第三方软件的状态信息.由于有几个值,我想在结构中返回值.但是,在结构中有char [](具有固定大小的char数组).我现在尝试从dll调用接收该结构,如下所示:
[StructLayout(LayoutKind.Sequential)]
public struct SYSTEM_OUTPUT
{
UInt16 ReadyForConnect;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 128)]
String VersionStr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
String NameOfFile;
// actually more of those
}
public partial class Form1 : Form
{
public SYSTEM_OUTPUT output;
[DllImport("testeshm.dll", EntryPoint="getStatus")]
public extern static int getStatus(out SYSTEM_OUTPUT output);
public Form1()
{
InitializeComponent();
}
private void ReadSharedMem_Click(object sender, EventArgs e)
{
try
{
label1.Text = getStatus(out output).ToString();
}
catch (AccessViolationException ave)
{
label1.Text = ave.Message;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我也会发布c …
我使用的是SurfaceView具有SurfaceHolder与在我的测试应用程序相机预览开始.
public class TextLocatorActivity extends Activity {
private Preview pvw;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
pvw = new Preview(this);
setContentView(pvw);
}
Run Code Online (Sandbox Code Playgroud)
我想使用CameraPreview(随SDK版本7的SDK Samples一起提供).点击UI即可拍照.这是Preview班级:
public class Preview extends SurfaceView implements OnClickListener, SurfaceHolder.Callback {
SurfaceHolder holder;
Camera cam;
final static String TAG = "TextLocator:Preview";
Preview(Context context) {
super(context);
holder = getHolder();
holder.addCallback(this);
this.setOnClickListener(this);
// seems to be required (although the docs state, this enum is deprecated, as the type will be …Run Code Online (Sandbox Code Playgroud) 我想序列化一个对象.我有这个基本的类结构:
class Controller
{
Clock clock;
public event EventHandler<ClockChangedEventArgs> ClockChanged;
public void serializeProperties()
{
using (FileStream stream = new FileStream(PROPERTIES_FILE, FileMode.Append, FileAccess.Write, FileShare.Write))
{
IFormatter formatter = new BinaryFormatter();
try
{
formatter.Serialize(stream, clock);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
}
public void deserializeProperties()
{
using (FileStream stream = new FileStream(PROPERTIES_FILE, FileMode.OpenOrCreate, FileAccess.Read, FileShare.Read))
{
IFormatter formatter = new BinaryFormatter();
try
{
clock = (Clock)formatter.Deserialize(stream);
}
catch (Exception e)
{
Console.WriteLine(e.Message);
clock = new Clock();
}
finally
{
clock.ClockChanged …Run Code Online (Sandbox Code Playgroud) 我正在使用CUDA Toolkit 4.0在我的Geforce 330M上尝试使用OpenCL-OpenGL互操作.
我想捕获一个帧,将该数据用作Image2DOpenCL内核的输入图像().内核应该操纵数据并将其写入一个Image2DGL具有附加OpenGL纹理的图像对象.基本上它看起来像这样:
_______________ RGB _______________
| | uint8* | | CL_RGBA / CL_UNORM_INT8
| Grabber | ------------> | Image2D | -------------------------.
| avcodec | | [input] | |
|_______________| |_______________| |
|
V
_______________ _______________ _______________
| | | | | |
| Texture | ------------> | Image2DGL | <-----------------> | Kernel |
|_______________| | [output] | |_______________|
|_______________|
Internal
Format: GL_RGBA
Format: GL_RGBA
Type: ?
Run Code Online (Sandbox Code Playgroud)
我正在初始化纹理:
GLuint tex = 0;
void initTexture( …Run Code Online (Sandbox Code Playgroud) IsMouseOverMarker属性检测单击标记就好了,但是当试图使用Control的IsMouseOverPolygon属性GMap来检测用户是否点击多边形线时 - 它似乎没有工作.
注意:控件的PolygonEnabled属性GMap设置为True.
该OnPolygonClick事件甚至不火:
private void gMap_OnPolygonClick(GMapPolygon item, MouseEventArgs e) {
double pLat = item.From.Value.Lat;
}
Run Code Online (Sandbox Code Playgroud)
Map Click事件会触发,但'IsMouseOverPolygon`永远不会获得True值:
private void gMap_Click(object sender, EventArgs e) {
if (gMap.IsMouseOverMarker) {
MessageBox.Show("Clicked on marker and it works!");
}
if (gMap.IsMouseOverPolygon) {
MessageBox.Show("clicked on line - never works");
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道我添加多边形的方式是否有问题,或者是因为在我的情况下它只是线条:
GMapOverlay polyOverlay = new GMapOverlay("polygons");
gMap.Overlays.Add(polyOverlay);
List<PointLatLng> points = new List<PointLatLng>();
points.Add(start);
points.Add(end);
polygon = new GMapPolygon(points, "mypolygon");
polygon.Stroke = …Run Code Online (Sandbox Code Playgroud) 我的问题可能有点奇怪.我已经"开发"了一种算法,并且不知道是否已经存在类似的算法.
情况:我有一个由跟踪点(2D)定义的轨道.例如,轨迹点代表转弯.在跟踪点之间只有直线.现在我在这个2D空间中给出了一组坐标.我计算从第一个跟踪点到新坐标的距离以及前两个跟踪点的间隔距离.如果到测量坐标的距离比从第一个到第二个轨迹点的距离短,我假设这个点位于这个间隔之间.然后我对它进行线性插值.如果它更大,我将检查下一个间隔.
所以它基本上采用间隔距离并试图将它们放在那里.我正试图跟踪一个大致沿着这条轨道移动的物体.
这对某人来说听起来很熟悉吗?有人可以提出类似现有算法的建议吗?
编辑:从我到目前为止所说的,我想澄清一个位置与跟踪点没有多少关联.考虑Jonathan制作的精细ASCII绘图:
发现X位置在段1和2内(S12).现在下一个位置是Y,不能认为它足够接近S12.我将继续前进到S23,并检查它是否存在.
如果它在,我将不会检查S12的任何其他值,因为我已经在下一个段中找到了一个.该算法"不回头".
但是如果它没有从那里找到正确的段,因为它发生在远离第一段,但仍然远离任何其他段无论如何,我将删除该值,下一个位置将被寻找又回到了S12.
循环仍然是一个问题.考虑我为S23得到Y然后跳过两三个位置(因为它们太远了),我可能会失去赛道.我可以在S34确定一个位置,它已经在S56中了.
也许我可以拿出一些平均速度来判断应该在哪个部分.
看起来细分市场越大,做出正确决策的机会就越大.
我试图弄清楚数据绑定BindingSource应该如何工作我希望DataGridView用一个List<>更新列表的内容填充.
List当我检查调试器时,我可以看到增长并验证它是否被填充.我认为BindingSource当List改变时会发生一个事件.但没有一个是可用的.如何更改基础列表时收到通知?
我按照说明操作,并提供以下测试代码:
Data d;
BindingSource bs;
public Form1()
{
InitializeComponent();
bs = new BindingSource();
d = new Data();
}
private void Form1_Load(object sender, EventArgs e)
{
bs.DataSourceChanged += new EventHandler(bs_DataSourceChanged);
bs.ListChanged += new ListChangedEventHandler(bs_ListChanged);
bs.DataMemberChanged += new EventHandler(bs_DataMemberChanged);
bs.CurrentChanged += new EventHandler(bs_CurrentChanged);
bs.CurrentItemChanged += new EventHandler(bs_CurrentItemChanged);
bs.DataSource = d.list;
dataGridView1.DataSource = bs;
}
// ... all the handling methods caught with a break point in VS.
private void …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×2
opencl ×2
algorithm ×1
android ×1
beamer ×1
c++ ×1
data-binding ×1
dispatcher ×1
distance ×1
gmap.net ×1
graphics ×1
ipc ×1
latex ×1
libavcodec ×1
marshalling ×1
nvidia ×1
opengl ×1
pinvoke ×1
simd ×1
surfaceview ×1
texture2d ×1
winforms ×1
wpf ×1