画圆移动

package bwie.com.myview1;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Path;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

/**
 * Created by WSQ on 2017/10/31 0031.
 */

public class MyView extends View {
    private Paint paint;
    private float cx=100f;
    private float cy = 100f;

    public MyView(Context context) {
        super(context);
    }

    public MyView(Context context, AttributeSet attrs) {
        super(context, attrs);
        //创建画笔
        paint=new Paint();
        //设置颜色
        paint.setColor(Color.parseColor("#ff0000"));
        //设置抗锯齿
        paint.setAntiAlias(true);
        //设置画笔粗细
        paint.setStrokeWidth(2);
        //设置是否为空心
        paint.setStyle(Paint.Style.FILL_AND_STROKE);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //绘制圆形
        canvas.drawCircle(cx,cy,50,paint);

        paint.setStyle(Paint.Style.STROKE);
        Path path = new Path();
        path.moveTo(100,300);
        path.quadTo(cx,cy,300,300);
        canvas.drawPath(path,paint);
    }

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        cx=event.getX();
        cy=event.getY();
        //刷新view
        invalidate();
        return true;


    }
}




<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="bwie.com.myview1.MainActivity">

    <bwie.com.myview1.MyView
        android:layout_width="match_parent"
        android:layout_height="match_parent"></bwie.com.myview1.MyView>

</RelativeLayout>


////////colors.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="colorPrimary">#3F51B5</color>
    <color name="colorPrimaryDark">#303F9F</color>
    <color name="colorAccent">#FF4081</color>
</resources>

  

转载于:https://www.cnblogs.com/wsq110/p/7770552.html

以下是在 Visual C++ 6.0 中使用 MFC 库绘制并移动的示例代码: 1. 首先创建一个 MFC 应用程序项目,选择单文档类型。 2. 在 View 类的头文件中定义一个变量来存储的位置和半径: ```cpp class CMyView : public CView { // ... private: int m_nX, m_nY; // 心坐标 int m_nRadius; // 半径 }; ``` 3. 在 View 类的构造函数中初始化这些变量: ```cpp CMyView::CMyView() { // 初始化的位置和半径 m_nX = 100; m_nY = 100; m_nRadius = 30; } ``` 4. 在 View 类的 OnDraw 函数中绘制: ```cpp void CMyView::OnDraw(CDC* pDC) { CBrush brush(RGB(255, 0, 0)); // 红色刷 CBrush* pOldBrush = pDC->SelectObject(&brush); pDC->Ellipse(m_nX - m_nRadius, m_nY - m_nRadius, m_nX + m_nRadius, m_nY + m_nRadius); pDC->SelectObject(pOldBrush); } ``` 5. 在 View 类的 OnTimer 函数中更新的位置并调用 Invalidate 函数刷新窗口: ```cpp void CMyView::OnTimer(UINT nIDEvent) { // 移动的位置 m_nX += 5; m_nY += 5; // 判断是否超出窗口边界 CRect rect; GetClientRect(&rect); if (m_nX + m_nRadius > rect.right) m_nX = rect.right - m_nRadius; if (m_nY + m_nRadius > rect.bottom) m_nY = rect.bottom - m_nRadius; Invalidate(FALSE); CView::OnTimer(nIDEvent); } ``` 6. 在 View 类的 OnInitialUpdate 函数中启动定时器: ```cpp void CMyView::OnInitialUpdate() { CView::OnInitialUpdate(); SetTimer(1, 50, NULL); } ``` 7. 在 MainFrame 类的 OnCreate 函数中调用 EnableDocking 函数和相关的 DockControlBar 函数,以便在窗口底部添加一个状态栏: ```cpp int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) { // ... // 启用停靠 EnableDocking(CBRS_ALIGN_ANY); // 创建状态栏 if (!m_wndStatusBar.Create(this) || !m_wndStatusBar.SetIndicators(indicators, sizeof(indicators)/sizeof(UINT))) { TRACE0("Failed to create status bar\n"); return -1; // 未能创建 } // 将状态栏停靠在窗口底部 m_wndStatusBar.EnableDocking(CBRS_ALIGN_BOTTOM); DockControlBar(&m_wndStatusBar); // ... } ``` 8. 在资源编辑器中打开状态栏的属性对话框,将 Style 属性设置为 1,表示自适应大小。 现在你可以运行应用程序,你将看到一个红色的在窗口中移动,并且状态栏将显示当前的位置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值